2015-06-09 4 views
1

У меня есть массив объектов, и я хочу суммировать значение одного из свойств. Вот изображение, которое покажет структуру массива. enter image description hereКак я могу суммировать свойство объектов массива с помощью PHP

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

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; 
+0

Вы должны петлю вокруг '$ res-> intervalStats'. – Rikesh

+0

'-> отправлено'? возможно, вы имели в виду '-> потратил' – Ghost

+0

@ghost извините, что потратил ... bthway ... не работает для меня –

ответ

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

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

Спасибо @Babar отлично работает для меня. –

+0

Добро пожаловать, пожалуйста, проверьте ответ, если он правильный – Babar

6

Сделать использование array_reduce функции, как показано ниже

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

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

[[email protected] 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; 
?> 

Выход

[[email protected] tmp]$ php test.php 
stdClass Object 
(
    [intervalStats] => Array 
     (
      [0] => stdClass Object 
       (
        [spent] => 1 
       ) 

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

     ) 

) 

6 
+1

Спасибо @Akshay Hegde за экспансию ... Это помогло мне много –

+0

приветствовать приятеля, продолжать учиться –

0

Это работает на ЛАТЕС PHP версии (проверено на 7.2)

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

Смежные вопросы