2013-05-28 59 views
1

假設我對數組使用了一個foreach循環,並且這些值是每個元素的引用,並且我想要刪除一個元素,我該如何去做?什麼是使用引用刪除數組元素的最佳方法

$array = array("1" => "PHP code tester Sandbox Online", 
       "foo" => "bar", 
       6, 
       5 => 89009, 
       "case" => "Random Stuff", 
       "PHP Version" => phpversion() 
      ); 

foreach($array as &$d){ 
    if($d == 5) unset($d); 
} 

但它沒有做任何事。有沒有辦法使用foreach來做到這一點,或者我需要研究其他解決方案?

+0

''foo「=>」bar「' –

+0

'後面有一個鍵入口,謝謝。我已經調整了一些格式來突出顯示。 –

+0

@GeorgeCummins謝謝 –

回答

2

我想嘗試做的是刪除您必須編寫針對它的值是5, 在這種情況下,數組的元素:

foreach ($array as $d => $v) { 
    if ($d == 5) 
     unset ($array[$d]); 
} 

foreach ($array as $v)正在枚舉數組的值,而不是它的鍵。

更多信息以foreach (PHP documentation)

1

這也可以不參考

foreach($array as $d){ 
    if($d == 5) unset($array[$d]); 
} 

編輯

您剛剛更新了你的問題後,你不能有2個指標具有相同的名稱。您有一個索引5兩次是無效

+0

真的,謝謝你的解決方案工作=) –

+0

如果值是5,你取消設置其關鍵是5的數組元素?那有意義嗎 ? – user544262772

+0

我很確定'foreach($ array爲$ d)'列舉了數組的值,而不是它的鍵值。 – user544262772

0

倘若你正試圖刪除基於密鑰和一個數組元素不是你不需要做一個循環,如果語句中的值。您可以正好被清除該密鑰明確就像在你的榜樣它看上去就像如果你試圖做:

unset($array[5]); 

如果有你想刪除鍵的列表,你會在foreach數組做。

$array = array("1" => "PHP code tester Sandbox Online", 
      "foo" => "bar", 
      6, 
      5 => 89009, 
      "case" => "Random Stuff", 
      "PHP Version" => phpversion() 
     ); 

$remove = array('5', 'foo', 'case'); 

foreach ($remove as $r){ 
    unset($array[$r]); 
}; 
相關問題