使用PHP中另一个数组的元素取消多维变量的一部分

时间:2015-12-10 08:17:51

标签: php multidimensional-array

如何取消()我的多维数组的某些部分?

我有一个类似

的数组
$list['A_1']['AA_2']['AAA_3']['AAAA_4'] = 'stuff'; 
$list['B_1']['BB_2']['BBB_3'] = 'stuff'; 
$list['C_1']['CC_2']['CCC_3']['CCCC_4']['CCCCC_5']['CCCCCC_6']['CCCCCCC_7']['CCCCCCCC_8'] = 'stuff'; 
$list['D_1']['DD_2']['DDD_3']['DDDD_4']['DDDDD_5'] = 'stuff'; 

通常我会用

做我想要的未设置()
unset( $list['A_1']['AA_2']['AAA_3'] );
unset( $list['B_1']['BB_2']['BBB_3'] );
unset( $list['C_1']['CC_2']['CCC_3']['CCCC_4']['CCCCC_5'] );
unset( $list['D_1']['DD_2']['DDD_3']['DDDD_4'] ); 

但是我想通过使用另一个数组中的元素取消它们来获得相同的结果:

$result = array('A_1','AA_2','AAA_3');
$result = array('B_1','BB_2','BBB_3');
$result = array('C_1','CC_2','CCC_3','CCCC_4','CCCCC_5');
$result = array('D_1','DD_2','DDD_3','DDDD_4');

我试图用我能想象到的最简单的方式来接近它 但遗憾的是,它并不那么容易,而且不起作用:

$result = array('A_1','AA_2','AAA_3');    
unset( $list[$result] ); 

返回: 警告:未设置的非法偏移类型

2 个答案:

答案 0 :(得分:1)

应该这样做

function unsetArray(&$list, $result) {
    eval("unset("."\$list['".implode("']['", $result)."']".");");
}
unsetArray($list, $result);
var_dump($list);

答案 1 :(得分:0)

您需要形成多维数组才能取消设置。在这里您使用的是单维数组。只需在结果数组中的数组内部形成数组。

感谢。