Сумма значений, полученных от foreach l oop php - PullRequest
0 голосов
/ 17 марта 2020

Я хочу суммировать значения в моей пользовательской функции, где полученный аргумент / параметр является переменной из foreach l oop в другом файле.

Ниже приведен код:

// $value is the looped variable from another function
function custom_function($value) {
  // simple logic
  $var = [];
  $var += $value;
  print_r($var);

  // using array logic
  $array = [];
  $array[] = $value;
  print_r($array);
}

Проблема в том, что при использовании любого из print_r я получаю вывод в виде:

Array
(
    [0] => 100
)
Array
(
    [0] => 200
)

Мне нужно 300, т.е. сумма 100 + 200, причина, по которой я подозреваю, $value является зацикленной переменной.

Ответы [ 3 ]

0 голосов
/ 17 марта 2020

Вы можете использовать переменную stati c для поддержания суммы между вызовами функций:

function custom_function($value) {
    static $var = 0;
    $var += $value;
    echo "$var\n";
}

custom_function(100);
custom_function(200);

Выход:

100
300

Демонстрация на 3v4l.org

0 голосов
/ 17 марта 2020

Вы можете использовать array_sum для вычисления суммы значений массива

function custom_function($value) {
  // simple logic
  $var = [];
  $var += $value;
  print_r($var);
  print_r(array_sum($var));
}

 $array = array('100','200');
 $res= array(); //declare a new array 
 foreach($array as $val)
  {
    array_push($res,$val);  // push each element to newly created array
  }
 custom_function($res); //call custom function to calculate the sum of array elements
0 голосов
/ 17 марта 2020
$a = array('10','20','30');
$result = array();
$temp = 0;
foreach($a as $v)
{
  $temp  = $v+$temp; 
  array_push($result,$temp);

}
echo end($result);
echo '<br>';
print_r($result);

Я думаю, $a - это массив значений, которые передаются. Попробуйте сделать это, если вы не хотите менять большую часть логики c, просто создайте 2 временные переменные

...