有没有更简单的方法来做到这一点?从数组中删除值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