刪除從PHP中的數組元素但array_search
如何在沒有數組搜索的情況下從php中的數組中刪除元素?
我想刪除數組的數組元素,但我不知道該元素只值是已知的陣列key
有可能通過array_search
與值,首先要找到問題的關鍵,然後用unset
有沒有什麼內在的陣列功能刪除數組元素與數組值?
刪除從PHP中的數組元素但array_search
如何在沒有數組搜索的情況下從php中的數組中刪除元素?
我想刪除數組的數組元素,但我不知道該元素只值是已知的陣列key
有可能通過array_search
與值,首先要找到問題的關鍵,然後用unset
有沒有什麼內在的陣列功能刪除數組元素與數組值?
只能僅通過參考此KEY刪除數組元素。所以你必須以某種方式得到這個KEY。該函數以獲取從陣列搜索值的關鍵是準確array_search()
函數返回定值的密鑰。
實施例示出可以做到這一點,而無需使用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;
}
);
如果它正在重複,它不會刪除所有出現的「$ knownValue」。但也許這就是問題中所期望的行爲。 –
@Pushpesh - 是的,它會刪除所有出現的$ knownValue,如果有重複的...否則你需要某種形式的機制來識別你想刪除....但你需要,但是你試圖刪除幾個(甚至array_search()將不一定幫助你) –
具有到「與數組值中刪除數組元素」的任何功能的一種方式將不得不在每次執行循環*元件尋找要刪除的價值。因此,你可能也只是添加自己for
循環要做到這一點,或將array_search()
做到這一點你。
原因陣列具有關鍵是讓你可以在值得到有效地使用該密鑰。
* 實際上你會停止循環,一旦你找到它,而不是繼續找,除非有可能是重複刪除
唯一有效的情況下,不使用array_search
是,如果你想取消幾個值。你仍然需要使用密鑰。我建議你遍歷數組並刪除符合條件的字段。
foreach($array as $key => $value) {
if($value === $deleteValue)
unset($array[$key]);
}
爲什麼不能使用'array_search()'? –
是的,有無數種複雜的方法可以做到,但'array_search'是最直接的。 – deceze
感謝您的所有答案... –