【问题标题】:Reomve all specific keys in multidimensional array PHP删除多维数组PHP中的所有特定键
【发布时间】:2017-09-26 19:43:57
【问题描述】:

我想删除所有键 [Name],但主要问题是列表键中的数字([List1]、[List2] 等)。键 [List] 上的数字可能更多,但例如我只给出了两个。

我想更改它,因为它是一个旧的 json 文件,而在新文件中它没有密钥,如转换器

有没有办法遍历整个数组并删除所有 [Name] 键?

Array(
 [Values] => 1
 [List1] => Array(
    [Product1] => Array( 
       [0] => Array(
          [Properties] => Array( 
            [Id] => 1
            [Name] => Nm1
          )
        )
        [1]=> Array(
            [Properties] => Array(  
                [Id] => 1
                [Name] => Nm1
            )
        )
    )
    [List1] => Array(
        [Product1] => Array( 
            [0] => Array(
                [Properties] => Array( 
                    [Id] => 1
                    [Name] => Nm1
                )
            )
        )
    )
    [List2] => Array(
        [Product1] => Array( 
            [0] => Array(
                [Properties] => Array( 
                    [Id] => 1
                    [Name] => 0
                )
            )
        )
    )
  )
  [List2] => Array(
    [Product1] => Array( 
        [0] => Array(
            [Properties] => Array( 
                [Id] => 1
                [Name] => Nm1
            )
        )
    )
    [List1] => Array(
        [Product1] => Array( 
            [0] => Array(
                [Properties] => Array( 
                    [Id] => 1
                    [Name] => Nm1
                )
            )
        )
    )
 )
)

我的目标是:

Array(
 [Values] => 1
 [List1] => Array(
    [Product1] => Array( 
       [0] => Array(
          [Properties] => Array( 
            [Id] => 1
          )
        )
        [1]=> Array(
            [Properties] => Array(  
                [Id] => 1
            )
        )
    )
    [List1] => Array(
        [Product1] => Array( 
            [0] => Array(
                [Properties] => Array( 
                    [Id] => 1
                )
            )
        )
    )
    [List2] => Array(
        [Product1] => Array( 
            [0] => Array(
                [Properties] => Array( 
                    [Id] => 1
                )
            )
        )
    )
  )
  [List2] => Array(
    [Product1] => Array( 
        [0] => Array(
            [Properties] => Array( 
                [Id] => 1
            )
        )
    )
    [List1] => Array(
        [Product1] => Array( 
            [0] => Array(
                [Properties] => Array( 
                    [Id] => 1
                )
            )
        )
    )
 )
)

我试过了:

$ProductCount= count($array['List1']['Product1']);
for($i = 0;$i<$ProductCount;$i++){
  unset($array['List1']['Product1'][$i][Properties][Name]);
}

但我也有一个键[List2],可以是[List3]等。

【问题讨论】:

  • 也显示您的预期输出。以及你所尝试的
  • 为什么要删除密钥?你的意思是要打印数组元素吗?
  • 复制到没有键名的新数组
  • @B.Desai 添加。

标签: php arrays multidimensional-array


【解决方案1】:

你可以这样做:

function remove_key($array, $key)
{
    foreach($array as $k => $v) {
    if(is_array($v)) {
        $array[$k] = remove_key($v, $key);
    } elseif($k == $key) {
        unset($array[$k]);
    }
    }
    return $array;
}

$array = remove_key($array, 'Name');

$array 是您的多维数组,$key 是您要删除的键名。 注意:如果键代表一个数组(不是一个值),此方法将忽略它,但我认为这是您需要的。如果要在键匹配的情况下删除数组,则需要在 foreach 循环中切换条件顺序。

【讨论】:

    猜你喜欢
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多