用这个数组映射PHP中的数组


Mapping an array in PHP with this array

我有如下数组,

$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]);
 }