Php 删除子数组中的键

Php 删除子数组中的键,php,arrays,Php,Arrays,我有这样一个多阵列: array(2) { [0]=> array(8) { [0]=> string(1) "3" ["Id"]=> string(1) "3" [1]=> string(8) "Portugal" ["Country"]=> string(8) "Portugal" [2]=&g

我有这样一个多阵列:

 array(2) {
      [0]=>
      array(8) {
        [0]=>
        string(1) "3"
        ["Id"]=>
        string(1) "3"
        [1]=>
        string(8) "Portugal"
        ["Country"]=>
        string(8) "Portugal"
        [2]=>
        string(8) "sometext"
        ["Type"]=>
        string(8) "sometext"
        [3]=>
        string(1) "0"
        ["xptoabcdef"]=>
        string(1) "0"
      }
      [1]=>
      array(8) {
        [0]=>
        string(1) "4"
        ["Id"]=>
        string(1) "4"
        [1]=>
        string(8) "Portugal"
        ["Country"]=>
        string(8) "Portugal"
        [2]=>
        string(8) "sometext"
        ["Type"]=>
        string(8) "sometext"
        [3]=>
        string(2) "22"
        ["xptoabcdef"]=>
        string(2) "22"
      }
如何以最简单的方式从数组中删除“Country”列?

尝试使用

.

您可以使用回调函数来实现这一点:

$array = array_map(function($elem) {
   unset($elem['Country']); 
   return $elem;
}, $array);
或者使用循环并通过引用传递值,如下所示:

foreach ($array as $key => & $value) {
    unset($value['Country']);
}

要删除数组及其子数组中的一个或多个键的所有实例(无论有多深):


foreach
(带参考)或
array\u map
,以及
unset
相应的键。干得好!谢谢:)如果您能为代码添加一个简单的解释,那就太好了。@2nob2good:np mate,但我无法编写更好的解释,因为已经在手动站点上了:。array_map()的基本功能是循环给定数组的所有第一个元素(参数
$v
)。然后通过取消设置一些变量来修改数组
$v
,并返回它。
foreach ($array as $key => & $value) {
    unset($value['Country']);
}
print_r(deep_delete_keys($arr,'country'));

function deep_delete_keys($arr, $keys) {
    if (!is_array($keys)) $keys = array($keys);
    $filteredArr = array_diff_key( $arr, array_flip( $keys ) );
    foreach ($filteredArr as &$val) {
        if (is_array($val)) {
            $val = deep_delete_keys($val, $keys);
        }
    }
    return $filteredArr;
}