Сумма массива и количество строк в PHP - PullRequest
0 голосов
/ 25 января 2019

У меня есть функция getData, которая возвращает:

    array:4 [▼
  0 => array:1 [▼
    0 => "5689.01"
  ]
  1 => array:1 [▼
    0 => "5689.01"

  ]
  2 => array:1 [▼
    0 => "0.0"
  ]
  3 => array:1 [▼
    0 => "5665.11"
   ]
]

Мне нужно СЧИТАТЬ количество строк (на этот раз 4, как указано выше) со значениями, которые возвращаются каждый раз, когда я инициирую вызов, и возвращаем общую сумму всех результатов, как указано.

 $rows = $this->get('app')->getData();

 if($rows) {
        foreach ($rows as $row) {
            $sumOfAll = 0;
            $total = count($rows);
            $sumOfAll += array_sum(array($row[0] * $total));

            dump($sumOfAll);die;
    }
}

Я всегда получаю неправильную сумму, в данном случае это было 22756.04.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Используйте array_sum и array_column для получения значений и их суммирования.
Затем используйте count (), чтобы получить счет.

$sum = array_sum(array_column($arr, 0));
$count = count($arr);

echo "count is ". $count . " And sum is " . $sum;

https://3v4l.org/HFbgc

0 голосов
/ 25 января 2019

Чтобы зафиксировать значение суммы, вам нужно переместить $sumOfAll переменную за пределы вашей foreach

Измените свой код с этого:

foreach ($rows as $row) {
    $sumOfAll = 0;
    $total = count($rows);
    $sumOfAll += array_sum(array($row[6] * $total));

    dump($sumOfAll);die;
}

к этому:

$sumOfAll = 0;
foreach ($rows as $row) {
    $total = count($rows);
    $sumOfAll += array_sum(array($row[6] * $total));
}
dump($sumOfAll);die;
...