Php 删除嵌套数组元素的最有效方法
假设我有以下几点:Php 删除嵌套数组元素的最有效方法,php,arrays,unset,Php,Arrays,Unset,假设我有以下几点: Array( [0] => Array ( [id] => 1 [item] => first item ) [1] => Array ( [id] => 3 [item] => second item ) [2] => Array ( [id] => 5 [item] => thir
Array(
[0] => Array
(
[id] => 1
[item] => first item
)
[1] => Array
(
[id] => 3
[item] => second item
)
[2] => Array
(
[id] => 5
[item] => third item
)
)
我想删除id为
5的项目。我知道我可以通过数组和unset进行循环,但我希望有一个更直接/有效的解决方案。如果您不能将ID作为外部数组的键(那么您可以简单地使用unset($arr[5]);
),在数组上循环确实是实现dg的方法
foreach($arr as $key => $value) {
if($value['id'] === 5) {
unset($arr[$key]);
break;
}
}
另一个选项是使用-尽管效率较低,因为它会创建一个新数组:
$arr = array_filter($arr, function($value) {
return $value['id'] !== 5;
});
如果您不能将id作为外部数组的键(那么您可以简单地使用unset($arr[5]);
),那么在数组上循环确实是实现dg的方法
foreach($arr as $key => $value) {
if($value['id'] === 5) {
unset($arr[$key]);
break;
}
}
另一个选项是使用-尽管效率较低,因为它会创建一个新数组:
$arr = array_filter($arr, function($value) {
return $value['id'] !== 5;
});
为什么不使用设置为ID的键创建数组?例如:
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
?>
为什么不使用设置为ID的键创建数组?例如:
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
?>
最有效的方法是使用两个阵列
ID => Index
Index => Object (your current array)
在ID=>索引帮助器数组中搜索ID,该值将是主数组的索引,然后将它们都取消设置。最有效的方法是使用两个数组
ID => Index
Index => Object (your current array)
在ID=>索引帮助器数组中搜索ID,该值将是主数组的索引,然后将它们都取消设置。对于多级嵌套数组
<?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;
}
?>
用于多级嵌套数组
<?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;
}
?>
我处理的是一些旧的JSON,无法对其进行操作,除非我能以某种方式转换数组……嗯,我认为如果你无法操作,你可能是唯一的选择。我处理的是一些旧的JSON,无法对其进行操作,除非我能以某种方式转换数组…嗯,我想如果你不能操纵,你是唯一的选择,也许可以循环通过