是否可以在不知道索引的情況下從PHP數組中刪除字符串(請參閱下面的示例)?從PHP數組中刪除字符串?
實施例:
array = array("string1", "string2", "string3", "string4", "string5");
我需要刪除STRING3。
是否可以在不知道索引的情況下從PHP數組中刪除字符串(請參閱下面的示例)?從PHP數組中刪除字符串?
實施例:
array = array("string1", "string2", "string3", "string4", "string5");
我需要刪除STRING3。
$index = array_search('string3',$array);
if($index !== FALSE){
unset($array[$index]);
}
,如果你認爲你的價值會在那裏不止一次嘗試使用array_keys與搜索值獲取所有的索引。你可能會想確保
編輯:
注意,該指標使用unset
時保持不變。如果這是一個問題,有一個很好的答案here,顯示如何使用array_splice
來做到這一點。
它的類型取決於數組可能有多大,並且有多個選項。如Jorge所發佈的,array_diff可能是最快一致的解決方案。
稍微大套的另一個解決方案:
$data = array_flip($data);
unset($data[$item2remove]);
$data = array_flip($data);
但是,如果你沒有重複的項目,這只是良好。根據你的工作量,保證物品的獨特性也許是有利的。
你可以這樣做。
$arr = array("string1", "string2", "string3", "string4", "string5");
$new_arr=array();
foreach($arr as $value)
{
if($value=="string3")
{
continue;
}
else
{
$new_arr[]=$value;
}
}
print_r($new_arr);
使用array_search
和array_splice
的組合。
function array_remove(&$array, $item){
$index = array_search($item, $array);
if($index === false)
return false;
array_splice($array, $index, 1);
return true;
}
這可能不是最快的方法,但它的代碼短而整齊的一行:
$array = array_diff($array, array("string3"))
,或者如果你正在使用PHP> 5.4.0或更高版本:
$array = array_diff($array, ["string3"])
我bench-marked你的GWW的方法在for循環運行250萬次。你的完成在18秒(17秒,當我沒有使用變量),而GWW的在16秒內完成。所以'array_diff'處理數組而不是單個字符串會更慢,從而導致開銷。 如果只有像'array_diff'這樣的函數,但用於刪除數組中的單個字符串。 – FluorescentGreen5 2017-03-12 07:19:55
我喜歡這個+1給你。但是,如何確認它已被刪除(在屏幕上顯示)? – 2010-11-08 01:38:42
查看php函數print_r和var_dump。您可以使用它們來轉儲數組的內容。 – GWW 2010-11-08 01:39:44
請注意,使用unset()將保持索引不變:http://sackoverflow.com/a/369761/176140 – schellmax 2013-07-24 14:15:47