如何取消嵌套 foreach 中的每个数组?

How to unset every array in nested foreach?

我有一个这样的多维数组输出:

    Array
(
    [0] => Array
        (
            [item] => null
            [count] => 0
            [child] => Array
                (
                    [Dagadu Bocah] => Array
                        (
                            [item] => Dagadu Bocah
                            [count] => 47
                            [child] => Array
                                (
                                    [HirukPikuk] => Array
                                        (
                                            [item] => HirukPikuk
                                            [count] => 5
                                            [child] => Array
                                                (
                                                    [DGD] => Array
                                                        (
                                                            [item] => DGD
                                                            [count] => 1
                                                            [child] => 
                                                        )

                                                )

                                        )

在我的期望中,我可以在 foreach 循环中使用 unset 函数来删除具有 3 个键的每个数组,即 'item'、'count' 和 'child'以便它生成这样的数组:

      Array
(
    [0] => ([Dagadu Bocah] =>Array([HirukPikuk] =>Array([DGD])

                                        )

这是我的代码,不符合我的期望:

    public function conditionalPatternBase($a){
{  
  foreach($a as $key => $value){
    foreach($value['child'] as $key1 => $value1){
        if(is_array($value1['child'])){
          foreach($value1['child'] as $value2){
            unset($value2);
            if(is_array($value2['child'])){
              foreach($value2['child'] as $value3){
                unset($value3);
                if(is_array($value3['child'])){
                  foreach($value3['child'] as $value4){
                    unset($value4);
                    if(is_array($value4['child'])){
                      foreach($value4['child'] as $value5){
                        unset($value5);
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }

}

有人可以帮忙吗?

对于您要使用的那种数据 recursion,像这样:

<?php
function getChildKey(array $data)
{
    $result = [];

    if (isset($data['child'])) {
        foreach ($data['child'] as $key => $value) {
            $result[$key] = getChildKey($value);
        }
    }

    if (empty($result)) {
        return '';
    }

    return $result;
}

$input = [
    [
        'item'  => null,
        'count' => 0,
        'child' => [
            'Dagadu Bocah' => [
                'item'  => 'Dagadu Bocah',
                'count' => 47,
                'child' => [
                    'HirukPikuk' => [
                        'item'  => 'HirukPikuk',
                        'count' => 5,
                        'child' => [
                            'DGD' => [
                                'item'  => 'DGD',
                                'count' => 1,
                                'child' => null,
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],
];

$output = [];
print_r($input);

foreach ($input as $index => $child) {
    $output[$index] = getChildKey($child);
}

print_r($output);