有沒有更簡單的方法來做到這一點?從數組中刪除值php
$array = array(1,57,5,84,21,8,4,2,8,3,4);
$remove = 21;
$i = 0;
foreach ($array as $value){
if($value == $remove)
unset($array[$i])
$i++;
}
//array: 1,57,5,84,8,4,2,8,3,4
有沒有更簡單的方法來做到這一點?從數組中刪除值php
$array = array(1,57,5,84,21,8,4,2,8,3,4);
$remove = 21;
$i = 0;
foreach ($array as $value){
if($value == $remove)
unset($array[$i])
$i++;
}
//array: 1,57,5,84,8,4,2,8,3,4
array_search
答案很好。你也可以這樣arraydiff
$array = array(1,57,5,84,21,8,4,2,8,3,4);
$remove = array(21);
$result = array_diff($array, $remove);
這是一個小清潔器:
foreach($array as $key => $value) {
if ($value == $remove) {
unset($array[$key]);
break;
}
}
UPDATE
備選地,可以將所述非匹配值到一個臨時數組,則重置原始。
$temp = array();
foreach($array as $key => $value) {
if ($value != $remove) {
$temp[$key] = $value;
}
}
$array = $temp;
如果你想刪除第一發生的項目在數組中,使用array_search
查找該項目的索引數組,而不是滾動您自己的循環英寸
$array = array(1,57,5,84,21,8,4,2,8,3,4);
$remove = 21;
$index = array_search($remove, $array);
if (index !== false)
unset($array[$index]);
要刪除所有重複,重新運行搜索/刪除,只要找到一個匹配:
while (false !== ($index = array_search($remove, $array))) {
unset($array[$index]);
}
或找到匹配值的所有鍵和刪除它們:
foreach (array_keys($array, $remove) as $key) {
unset($array[$key]);
}
這是假設只在數組中的值一次。否則,你可以使用'array_keys'(使用第二個參數)。 –
這將只適用於第一場比賽重複? –
這是一種方法。你也可以使用array_splice()。請參閱:http://stackoverflow.com/questions/369602/how-to-delete-an-element-from-an-array-in-php。 – xbonez