Как я могу суммировать объекты свойства массива с помощью переполнения стека

У меня есть массив объектов, и я хочу суммировать значение одного из свойств. Вот изображение, которое покажет структуру массива.введите описание изображения здесь

Вот мой код, который не работает.

print_r($res);//this appear the structure of array,which i will show.
$sum = 0;
foreach($res as $key=>$value){
if(isset($value->sent))
$sum += $value->sent;
}
echo $sum;

2

Решение

$sum = 0;
$result=$res->intervalStats;
foreach($result as $key=>$value){

if(isset($value->spent))
$sum += $value->spent;
}
echo $sum;
3

Другие решения

Использовать array_reduce функция как ниже

$sum = array_reduce($res->intervalStats, function($i, $obj)
{
return $i += $obj->spent;
});
echo $sum;

Образец теста

 [akshay@localhost tmp]$ cat test.php
<?php

$res = (object)array( "intervalStats" => array( (object)array("spent"=>1),(object)array("spent"=>5) ) );


$sum = array_reduce($res->intervalStats, function($i, $obj)
{
return $i += $obj->spent;
});

// Input
print_r($res);

// Output
echo $sum;
?>

Выход

 [akshay@localhost tmp]$ php test.php
stdClass Object
(
[intervalStats] => Array
(
[0] => stdClass Object
(
[spent] => 1
)

[1] => stdClass Object
(
[spent] => 5
)

)

)

6
6

Это работает на поздних версиях PHP (протестировано на 7.2)

$sum = array_sum(array_column($res->intervalStats, 'spent'));

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector