【问题标题】:Flatten Nested Array to a certain Key将嵌套数组展平到某个键
【发布时间】:2013-05-27 01:55:36
【问题描述】:

我有这样的数据结构

Array
(
    [0] => Array
        (
            [actionResult] => Array
                (
                    [show_page] => Array
                        (
                            [15] => Array
                                (
                                    [section_page_id] => 15
                                    [metadata_id] => 62
                                    [section_id] => 7
                                    [display_order] => 0
                                    [current_layout] => 15
                                    [behaviors] => a:1:{i:0;a:1:{i:0;a:0:{}}}
                                    [options] => a:1:{s:13:"defaultLayout";i:63;}
                                    [section_title] => Ask Study
                                )

                            [16] => Array
                                (
                                    [section_page_id] => 16
                                    [metadata_id] => 66
                                    [section_id] => 7
                                    [display_order] => 1
                                    [current_layout] => 16
                                    [behaviors] => a:0:{}
                                    [options] => a:1:{s:13:"defaultLayout";i:67;}
                                    [section_title] => Ask Study
                                )

                            [17] => Array
                                (
                                    [section_page_id] => 17
                                    [metadata_id] => 69
                                    [section_id] => 7
                                    [display_order] => 2
                                    [current_layout] => 17
                                    [behaviors] => a:0:{}
                                    [options] => a:1:{s:13:"defaultLayout";i:70;}
                                    [section_title] => Ask Study
                                )

                            [18] => Array
                                (
                                    [section_page_id] => 18
                                    [metadata_id] => 72
                                    [section_id] => 7
                                    [display_order] => 3
                                    [current_layout] => 18
                                    [behaviors] => a:0:{}
                                    [options] => a:1:{s:13:"defaultLayout";i:73;}
                                    [section_title] => Ask Study
                                )

                        )

                )

        )

    [1] => Array
        (
            [actionResult] => Array
                (
                    [view_page] => 18
                )

        )

)

我需要的是能够将它展平为一个数组结构,直到它停在“actionResult”处,所有的 actionResult 都将变成一个数组,而不是像这样嵌套......

我怎样才能在 PHP 中做到这一点???

【问题讨论】:

  • 您尝试过什么?为什么。问题是什么?这在 php 中应该很容易。

标签: php multidimensional-array flatten


【解决方案1】:

如果我正确理解了您想要的内容,这应该可以:

$arr2=array();

foreach($arr as $tmp){
  foreach($tmp as $actionRequest){
    foreach($actionRequest as $key=>$val){
      $arr2[$key]=$val;
    }
  }
}

其中 $arr 是您已经拥有的,而 $arr2 将是一个包含 2 个值、Show_Page 和 view_page 的数组

【讨论】:

  • 这行不通,因为我可能有上面的列表,还有另一个可能没有像你看到的那样额外的内部数组...
【解决方案2】:

最好的解决办法是:

$new_arr = array_map(function ($a) {
    return $a['actionResult'];
}, $old_arr);

【讨论】:

  • 您的 PHP 版本是 5.2 吗?
  • 你能分享一下你找到的方法吗?
猜你喜欢
  • 1970-01-01
  • 2014-05-28
  • 1970-01-01
  • 2012-10-31
  • 2017-03-06
  • 2017-07-20
  • 2017-12-26
  • 2019-11-14
  • 1970-01-01
相关资源
最近更新 更多