2016-04-26 58 views
1

未定義抵消我有以下對象數組:注意:在循環拋出對象的數組用foreach

Array 
(
    [0] => Array 
     (
      [0] => stdClass Object 
       (
        [Sales] => 4 
       ) 

      [1] => stdClass Object 
       (
        [Sales] => 6 
       ) 

      [2] => stdClass Object 
       (
        [Sales] => 5 
       ) 

     ) 

    [1] => Array 
     (
      [0] => stdClass Object 
       (
        [Sales] => 8 
       ) 

      [1] => stdClass Object 
       (
        [Sales] => 7 
       ) 

      [2] => stdClass Object 
       (
        [Sales] => 7 
       ) 

     ) 

    [2] => Array 
     (
      [0] => stdClass Object 
       (
        [Sales] => 5 
       ) 

      [1] => stdClass Object 
       (
        [Sales] => 7 
       ) 

      [2] => stdClass Object 
       (
        [Sales] => 6 
       ) 

     ) 

    [3] => Array 
     (
      [0] => stdClass Object 
       (
        [Sales] => 5 
       ) 

      [1] => stdClass Object 
       (
        [Sales] => 6 
       ) 

      [2] => stdClass Object 
       (
        [Sales] => 6 
       ) 

     ) 

    [4] => Array 
     (
      [0] => stdClass Object 
       (
        [Sales] => 4 
       ) 

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

      [2] => stdClass Object 
       (
        [Sales] => 11 
       ) 

     ) 

) 

我想在每個對象的總銷售額。所以我寫了這個代碼:

public function getChannelsSales ($ChannelSales) { 
     $totalChannelSales = array(); 
     $i = 0; 
     foreach ($ChannelSales as $ChSales) { 
      foreach ($ChSales as $value) { 
       $totalChannelSales[$i] = $totalChannelSales [$i] + $value->Sales; 
      } 
      ++$i; 
     } 
     return $totalChannelSales; 
} 

運行代碼我得到正確的答案後:

Array 
(
    [0] => 15 
    [1] => 22 
    [2] => 18 
    [3] => 17 
    [4] => 20 
) 

但是我得到的也是在froint結尾出現下列信息:

Notice: Undefined offset: 0 in ...\Sales.php on line 174 
Notice: Undefined offset: 1 in ...\Sales.php on line 174 
Notice: Undefined offset: 2 in ...\Sales.php on line 174 
Notice: Undefined offset: 3 in ...\Sales.php on line 174 
Notice: Undefined offset: 4 in ...\Sales.php on line 174 

線174是這一個:

$totalChannelSales[$i] = $totalChannelSales[$i] + $value->Sales; 

而且即使答案是正確的,我也不知道問題出在哪裏(因爲你可以總結自己)

任何想法?

編輯:

我已經

 $totalChannelSales[0] = 0; 
  • 創建陣列之後。一旦與第一的foreach
  • 之前在兩者之間的第二時間增加兩倍的線得到的溶液對於每個AFTER的第一個foreach結束
+1

write $ totalChannelSales [$ i] = $ value-> Sales; – RJParikh

+2

'$ totalChannelSales [$ i] = $值 - >銷售;' –

回答

1

數組將從循環中逐個填充您的值。你不需要添加它。

使用下面的代碼。

$totalChannelSales[$i] = $value->Sales; 
+0

對不起您的解決方案給出了錯誤的答案: 我需要添加每個通道(15,22,18和20) 的所有銷售如果我使用你的解決方案,我只得到每個頻道的最後一個銷售(5,7,6,6和11) –

0

我猜你的問題是在這裏

$totalChannelSales[$i] = $totalChannelSales [$i] + $value->Sales; 

您正在嘗試設置甚至不存在,您可以使用array_push這一點,它會推元素和迭代指標指數。

0

我將帶您通過您的代碼找出錯誤:在上面的代碼

foreach ($ChannelSales as $ChSales) { 
     foreach ($ChSales as $value) { 
      $totalChannelSales[$i] = $totalChannelSales [$i] + $value->Sales; 
     } 
     ++$i; 
    } 

現在讓我們說在$ I = 0你是第一個環和當時$totalChannelSales[$i] = $totalChannelSales [$i] + $value->Sales;$totalChannelSales[0] = $totalChannelSales [0] + $value->Sales;所以將獲取$ totalChannelSales [0]值,該值在此時不存在,對於其他$ i值也是如此。

0
$totalChannelSales[$i] = $totalChannelSales [$i] + $value->Sales; 

在上面的代碼中,沒有爲右側的$totalChannelSales [$i]定義值。你只需要低於Assignement。

$totalChannelSales[$i] = $value->Sales; 
0

編輯:

我已經介紹了一個臨時變量$ tempsum這將刪除所有不確定的問題。

public function getChannelsSales ($ChannelSales) { 
    $totalChannelSales = array(); 
    $i = 0; 
    foreach ($ChannelSales as $ChSales) { 
     $tempsum = 0; 
     foreach ($ChSales as $value) { 
      $tempsum += $value->Sales; 
     } 
     $totalChannelSales[$i] = $tempsum; 
     $i++; 
    } 
    return $totalChannelSales; 
} 
+0

我做到了,但它仍然給予了一次消息: 注意:未定義偏移量:4 .. 。\ Sales.php 174行 –

+0

您可以試試$ i ++來代替++ $ i,只是一個嘗試。 – naf4me

+0

@RafaelMunoz我編輯了代碼。這將解決問題,而不會引入更多的賦值。 – naf4me