2012-05-25 49 views
1

刪除從PHP中的數組元素但array_search如何在沒有數組搜索的情況下從php中的數組中刪除元素?

我想刪除數組的數組元素,但我不知道該元素只值是已知的陣列key

有可能通過array_search與值,首先要找到問題的關鍵,然後用unset

有沒有什麼內在的陣列功能刪除數組元素與數組值?

+6

爲什麼不能使用'array_search()'? –

+0

是的,有無數種複雜的方法可以做到,但'array_search'是最直接的。 – deceze

+0

感謝您的所有答案... –

回答

4

只能僅通過參考此KEY刪除數組元素。所以你必須以某種方式得到這個KEY。該函數以獲取從陣列搜索值的關鍵是準確array_search()函數返回定值的密鑰。

2

實施例示出可以做到這一點,而無需使用array_search()

$myArray = array(5, 4, 3, 2, 1, 0, -1, -2); 
$knownValue = 3; 

$myArray = array_filter(
       $myArray, 
       function($value) use ($knownValue) { 
        return $value !== $knownValue; 
       } 
      ); 
+0

如果它正在重複,它不會刪除所有出現的「$ knownValue」。但也許這就是問題中所期望的行爲。 –

+1

@Pushpesh - 是的,它會刪除所有出現的$ knownValue,如果有重複的...否則你需要某種形式的機制來識別你想刪除....但你需要,但是你試圖刪除幾個(甚至array_search()將不一定幫助你) –

1

具有到「與數組值中刪除數組元素」的任何功能的一種方式將不得不在每次執行循環*元件尋找要刪除的價值。因此,你可能也只是添加自己for循環要做到這一點,或將array_search()做到這一點你。

原因陣列具有關鍵是讓你可以在值得到有效地使用該密鑰。

* 實際上你會停止循環,一旦你找到它,而不是繼續找,除非有可能是重複刪除

0

唯一有效的情況下,不使用array_search是,如果你想取消幾個值。你仍然需要使用密鑰。我建議你遍歷數組並刪除符合條件的字段。

foreach($array as $key => $value) { 
    if($value === $deleteValue) 
     unset($array[$key]); 
} 
相關問題