PHP - использовать объявленную переменную из foreach в следующей итерации - PullRequest
0 голосов
/ 27 сентября 2019

Я бы попросил помощи с foreach и использованием vars.Есть несколько условий в цикле.Если значение из массива равно чему-то, то что-то случилось и так далее.Мне нужно сохранить что-то в переменную, а затем использовать это во второй итерации foreach.Затем я использую массив $ total в интерфейсе.Я хотел бы сохранить порядок - поэтому сначала в $ итоговых значениях должны быть sub_total, затем налоговые, а затем итоговые.

Я пытался также определить $ разность и $ tax перед foreach, но он сбрасывается на каждой итерации.Теперь я сделал это с помощью сеанса, но я не уверен, что это правильно, и я хотел бы сделать это без сеанса.Я надеюсь, вы понимаете.

Ну, у меня есть цены в массиве (общая цена, итоговая цена, налог), и клиент видит округленную общую цену.Если общая цена округляется, мне нужно получить разницу между округленной общей ценой и общей ценой (не округленной) - переменная разница в долларах.Затем мне нужно рассчитать налог из разницы - var $ tax и эту переменную добавить к значению налога (680.2950), которое определено в массиве (Array [1]).Вывод всего кода должен быть сохранен в итоговых значениях массива, где код ключа - это код цены (например, total, tax, sub_total), а ключ 'text' - цена.Таким образом, массивы итогов в случае налога должны выглядеть массивом ([code] => tax [value] => 680.2950 + значение из переменной $ tax).Понимаешь?Не весь код мой.Это открытая тележка.

Не могли бы вы помочь мне, пожалуйста?Спасибо.

ПРИМЕР:

Array ( [0] => Array(
              [code] => sub_total 
              [value] => 3140.5000) 
        [1] => Array ( 
              [code] => tax 
              [value] => 680.2950) 
        [2] => Array ( 
              [code] => total 
              [value] => 3919.7950) 
       ) 
  $totals = array();
foreach($array as $key => $value) {
  if (!in_array($value['code'], array('sub_total', 'tax', 'total')){
       //do something, not important, just showing structure of my code
  } else {
    if($value['code'] == 'total') {
        $text = $value['value'];
      if(round($value['value']) > $value['value']) {
        $difference = round($value['value']) - $value['value'];
        $tax = ($difference*($tax_rate/(100+$tax_rate)));
      }
    }
    if($value['code'] == 'tax') {
     $text= $value['value'] + $tax;
     echo $tax; //shows nothing
     echo $text; //shows only 680.2950 ($value['value'] without $tax)
    }
   echo $tax; // Shows $tax correctly
 }
    $totals[] = array(

         'code'  => $value['code'],

         'text'  => $text,

    ); }
...