2014-12-04 107 views
0

我有東西,我不能讓我的頭:Foreach返回一個項目到很多

我正在處理一個數組與foreach循環。該數組有3個項目。我做了一些這些項目的東西,這些東西存儲回不同的陣列。在foreach循環之後,我沒有3個,但有4個項目在數組中...我用var_dump和print_r檢查過程的每個部分,以檢查是否有導致此行爲的「隱藏」項目,但找不到它。

查詢的結果變成數組,結果集爲3行。下面是代碼示例:

echo sizeOf($arrWithItems); //returns 3 
$i=0; 
$newArrWithItems = array(); 

foreach($arrWithItems as $item){ 
     $i++; //add one to the counter (only for testing) 

     // do stuff with $item for example: 
     $newArrWithItems[$item->id]['name'] = $item->name; 
} 

echo sizeOf($newArrWithItems) //returns 4 
echo $i //returns 3 

奇怪的是,當我在foreach循環內回聲整型尺寸($ newArrWithItems),它從0開始,用2和3所以它跳過更進一步但是,伯爵($ i)並沒有跳過一步。

我在這裏想念什麼......或者有沒有什麼提示如何進一步調試?我已經使用var_dump檢查了$ arrWithItems,它只顯示3個項目,很好地從0到2的數字。問題不僅僅出現在這個結果集中,而是它將一個項目添加到在此foreach循環中處理的所有數組中。

+1

你似乎並不在你的代碼將被初始化'$ newArrWithItems',因此沒有設想可以看 - 我們都知道,它的東西在完成這部分代碼之前完全不相關。 – 2014-12-04 13:00:45

+0

它可能取決於'//在你的代碼中使用$ item來做東西......在代碼的那一部分,使用'$ i'還是'$ arrWithItems'? – RichardBernards 2014-12-04 13:01:11

+0

試過'var_dump($ newArrWithItems)'?什麼是額外的元素? – 2014-12-04 13:03:12

回答

1

把這個foreach循環之前:

$newArrWithItems = array(); 

我想和你開始foreach循環之前,顯示結果爲3

0

你確定$ newArrWithItems是空的? 可能是你可以之前「的foreach」添加到您的代碼:

$newArrWithItems = array(); 
0

有再次的var_dump比較之後,我發現這個錯誤。這確實是「New Item with $ item」中沒有在New Arr中設置[$ item-> id]的東西。

0

目前還不清楚$ arrWithItems是ArrayObject還是數組?如果是這樣的陣列,這裏是一個簡單的例子:

$arrWithItems = array(
    array("id"  => 1, 
     "name"  => "Jack", 
     "address" => "Columbus", 
     "age"  => 25), 

    array("id"  => 3, 
     "name"  => "Hyam", 
     "address" => "Wyan", 
     "age"  => 26), 

    array("id"  => 10, 
     "name"  => "Jenny", 
     "address" => "Norfolk", 
     "age"  => 25), 
); 

$newArrWithItems = array(); 

foreach($arrWithItems as $key=>$item){ 
    // do stuff with $item for example: 
    $id = $item['id']; 
    $newArrWithItems["$id"]["name"] = $item['name']; 
} 
echo sizeOf($newArrWithItems); //returns 3