2014-09-10 104 views
1

我有一個數組,其中有另一個數組。我需要取消設置子數組的索引。取消設置另一個數組內的數組索引

array 
    0 => 
    array 
     'country_id' => string '1' (length=1) 
     'description' => string 'test' (length=4) 
    1 => 
    array 
     'country_id' => string '2' (length=1) 
     'description' => string 'sel' (length=5) 
    2 => 
    array 
     'country_id' => string '3' (length=1) 
     'description' => string 'soul' (length=5) 

現在我需要取消設置主數組的所有三個索引中的country_id。我使用的PHP和我最初認爲未設置會做,直到我意識到我的數組嵌套。

我該怎麼做?

+0

'的foreach($陣列作爲&$ element){unset($ element ['country_id'];}' – Steve 2014-09-10 12:33:21

+0

'foreach($ array as&$ sub)unset($ sub ['country_id']);' – 2014-09-10 12:33:24

+0

[PHP - unset in一個多維數組](http:// stackoverflow的.com /問題/ 7260468/PHP-未設定功能於一個-多維陣列) – Joanvo 2014-09-10 12:52:49

回答

0
foreach ($original_array as &$element) { 
    unset($element['country_id']); 
} 

爲什麼&$element

因爲foreach (...)將執行復制,所以我們需要將引用傳遞到「當前」元素,以取消它(而不是他的複印件)

0
foreach ($masterArray as &$subArray) 
    unset($subArray['country_id']); 

的想法是,你把每個子通過引用排列數組,並在其中取消設置鍵。


編輯:另一個想法,只是爲了使事情有趣,將使用array_walk函數。

array_walk($masterArray, function (&$item) { unset ($item['country_id']); }); 

我不確定它是否更具可讀性,並且函數調用會使它變慢。儘管如此,選擇還是有的。

0
foreach($yourArray as &$arr) 
{ 
    unset($arr['country_id']); 
} 
0

您需要使用:

foreach ($array as &$item) { 
    unset($item['country_id']); 
} 

但循環後,你真的應該取消設置基準,否則你可能會遇到麻煩,因此正確的代碼是:

foreach ($array as &$item) { 
    unset($item['country_id']); 
} 
unset($item); 
相關問題