我有一个数组,如下
[0=>['classId'=>2,'Name'=>'John'],1=>['classId'=>3,'Name'=>'Doe'],2=>['classId'=>4,'Name'=>'Stayne']]
我需要从数组中删除classId为2或4的元素,预期结果应该是
[0=>['classId'=>3,'Name'=>'Doe']]
如果不使用循环,我将如何实现这一点。希望有人能帮助
您可以将array_filter
与in_array
结合使用。
$array = [0=>['classId'=>2,'Name'=>'John'],1=>['classId'=>3,'Name'=>'Doe'],2=>['classId'=>4,'Name'=>'Stayne']];
var_dump(
array_filter($array, function($item){return !in_array($item["classId"], [2,4]);})
);
解释
array_filter
如果回调函数返回false,则从数组中删除元素。
in_array
在数组中搜索值;如果未找到值,则返回布尔值true/false。
试试这个:
foreach array as $k => $v{
if ($v['classId'] == 2){
unset(array[$k]);
}
}
我刚刚看到你的编辑,你可以这样使用array_filter:
function class_filter($arr){
return ($arr['classId'] == "whatever");
}
array_filter($arr, "class_filter");
注意:我相信您仍然需要循环遍历一个多维数组。