说我有以下内容:
Array(
[0] => Array
(
[id] => 1
[item] => first item
)
[1] => Array
(
[id] => 3
[item] => second item
)
[2] => Array
(
[id] => 5
[item] => third item
)
)
我想删除id
= 5的项目。我知道我可以遍历数组并取消设置,但我希望有更直接/有效的解决方案。
答案 0 :(得分:3)
如果你不能将ID作为外部数组的键(那么你可以简单地使用unset($arr[5]);
),那么循环遍历数组确实是dg的方法。
foreach($arr as $key => $value) {
if($value['id'] === 5) {
unset($arr[$key]);
break;
}
}
另一种选择是使用array_filter
- 虽然它创建了一个新数组但效率较低:
$arr = array_filter($arr, function($value) {
return $value['id'] !== 5;
});
答案 1 :(得分:1)
为什么不使用设置为ID的键创建数组? E.g:
Array(
[1] => Array
(
[id] => 1
[item] => first item
)
[3] => Array
(
[id] => 3
[item] => second item
)
[5] => Array
(
[id] => 5
[item] => third item
)
)
然后你可以写:
<?php
unset($array[5]); // Delete ID5
?>
答案 2 :(得分:1)
对于多级嵌套数组
<?php
function remove_array_by_key($key,$nestedArray){
foreach($nestedArray as $k=>$v){
if(is_array($v)){
remove_array_by_key($key,$v);
} elseif($k==$key){
unset($nesterArray[$k]);
}
}
return $nestedArrat;
}
?>
答案 3 :(得分:0)
最有效的方法是拥有2个阵列。
ID => Index
Index => Object (your current array)
在您的ID中搜索ID =&gt;索引辅助数组和值将是主数组的索引,然后将它们都取消设置。