2017-02-03 3 views
-1

У меня есть массив объектов:Получение суммы моего объекта массива

[Income] => Array 
    (
     [0] => Array 
      (
       [Today] => Array 
        (
         [0] => Array 
          (
           [Sum] => Array 
            (
             [Total] => 61.9700 
            ) 
          ) 

         [1] => Array 
          (
           [Sum] => Array 
            (
             [Total] => 60.2300 
            ) 
          ) 
        ) 
      ) 

     [1] => Array 
      (
       [Today] => Array 
        (
         [0] => Array 
          (
           [Sum] => Array 
            (
             [Total] => 51.9500 
            ) 
          ) 

         [1] => Array 
          (
           [Sum] => Array 
            (
             [Total] => 53.6900 
            ) 
          ) 
        ) 
      ) 
    ) 

Как правильно подводить Total для каждого уровня?

Income->[0]->Today should be 122.20 
Income->[1]->Today should be 105.64 

я попытался это: EDIT:

for($i=0;$i<count($item->Today);$i++){ 
    $total = 0; 
    foreach ($item->Today as $amount) { 
     if(is_object($amount[$i]->Sum->Total)){ 
     echo $amount[$i]->Sum->Total; 
     $total += $amount[$i]->Sum->Total; 
     } 
    } 
    if($i==0){ 
     echo '<td>'.$total.'</td>';  
    } 
} 

я получил это предупреждение об ошибке: Main():. Невозможно добавить элемент Сегодня число 3, когда существуют только 0 такие элементы в .. обновленный мой размещать с кодом я использую сейчас

я иметь его в качестве объекта из XML не массив
я знаю, что-то не так! я м до сих пор пытаюсь узнать многомерные массивы :(

+1

доход, кажется, ключ в массиве. Таким образом, вы не можете получить доступ к нему, используя 'Income', но используя' $ myArray ['Income'] ' – AnthonyB

ответ

1
<?php 
$income; 
for($i = 0; $i < count($income["Income"]); $i++) { 
    $total = 0; 
    foreach ($income["Income"][$i]["Today"] as $amount) { 
     $total += $amount["sum"]["Total"]; 
    } 
    $income["Income"][$i]["Today"] = $total; 
} 

Просто поместите ваши данные массив $income=//your data

+0

У меня это как объект из XML not array –

+0

Вы показали массив выше ... –

+0

Я сказал объект array –

1

Вам нужно Еогеасп:

$array=array(); 
foreach($arr['Income'] as $key=>$val){ 
    $array['Income'][$key]['Today']=0; 
    foreach($val['Today'] as $k=>$v){ 
     foreach($v as $keys=>$values){ 
      $array['Income'][$key]['Today']=$array['Income'][$key]['Today']+$values['Total']; 
     } 
    } 
} 

print_r($array);//your output. 

DEMO

+0

У меня это как объект из XML not array –

+0

@IngusGraholskis Ваши опубликованные данные не похожи на объект, это массив. правильный код data.выше, для отображаемых данных. –

+0

его $ xml = новый SimpleXMLElement ($ xmldata, LIBXML_NOCDATA); –

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