簡體   English   中英

從PHP數組中刪除字符串?

[英]Remove string from PHP array?

是否可以在不知道索引的情況下從PHP數組中刪除字符串(參見下面的示例)?

例:

array = array("string1", "string2", "string3", "string4", "string5");

我需要刪除string3。

$index = array_search('string3',$array);
if($index !== FALSE){
    unset($array[$index]);
}

如果您認為您的值將不止一次嘗試使用帶有搜索值的array_keys來獲取所有索引。 你可能想確定一下

編輯:

請注意,使用unset時索引保持不變。 如果這是一個問題,有一個很好的答案在這里 ,說明如何做到這一點使用array_splice

你可以這樣做。

$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_searcharray_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"])

它取決於陣列的大小,並且有多種選擇。

如果它通常很小,array_diff可能是最快的一致解決方案,正如Jorge所說。

另一種稍大的套裝解決方案:

$data = array_flip($data);
unset($data[$item2remove]);
$data = array_flip($data);

但是,如果你沒有重復的項目,這是唯一的好處。 根據您的工作量,保證項目的唯一性可能也是有利的。

你也可以這樣試試。

$array = ["string1", "string2", "string3", "string4", "string5"];
$key = array_search('string3',$array);
unset($array[$key]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM