我有如下数组,
$arr['fixed_key'][0]['key1']['key2'] = 'y';
$arr['fixed_key'][1]['key1']['key2'] = 'y';
$arr['fixed_key'][2]['key1']['key2'] = 'n';
$arr['fixed_key'][3]['key1']['key2'] = 'n';
我想删除所有key2='n'的数组,我可以在循环中遍历数组并实现这一点,如下所示:
$l=length($arr);
for($i=0;$i<$l;$i++) {
if($arr['fixed_key'][$i]['key1']['key2'] == 'n') {
unset($arr['fixed_key'][$i]['key1']['key2']);
}
}
我的问题是,有没有可能用更好的方式来做到这一点,比如array_map或array_walk,最好的方式是什么?
您可以使用array_filter
$arr['fixed_key'][0]['key1']['key2'] = 'y';
$arr['fixed_key'][1]['key1']['key2'] = 'y';
$arr['fixed_key'][2]['key1']['key2'] = 'n';
$arr['fixed_key'][3]['key1']['key2'] = 'n';
$filtered = array_filter($arr['fixed_key'], function ($val) { return $val['key1']['key2'] !== "n"; });
我们可以通过使用array_search()和unset来实现,请尝试以下操作:
if(($key = array_search($del_value, $arr)) !== false) {
unset($arr[$key]);
}