【问题标题】:Convert multidimensional array to a simple array by recursion通过递归将多维数组转换为简单数组
【发布时间】:2015-05-30 13:10:49
【问题描述】:

如何转换这个数组:

$array = [
    "order" => [
        "items" => [
            "6" => [
                "ndc" => "This value should not be blank."
            ],
            "7" => [
                "ndc" => "This value should not be blank."
            ]
        ]
    ]
];

$array = [
    "order[items][6][ndc]" => "This value should not be blank.",
    "order[items][7][ndc]" => "This value should not be blank.",
];

第一个数组可以有无限数量的嵌套级别。所以嵌套的 foreach 不是一种选择。

我花了很多时间寻找解决方案,但一无所获。请问有人可以帮助或指导我吗?

【问题讨论】:

    标签: php arrays recursion multidimensional-array


    【解决方案1】:

    这样的事情应该可以完成工作:

    $newArr = [];
    
    function reduce_multi_arr($array, &$newArr, $keys = '') {
      if (!is_array($array)) {
          $newArr[$keys] = $array;
      } else {
          foreach ($array as $key => $val) {
            if ($keys === '') $nextKey = $key; // first key
            else $nextKey = '[' . $key . ']'; // next [keys]
            reduce_multi_arr($val, $newArr, $keys . $nextKey);
          }
      }
    }
    
    reduce_multi_arr($array, $newArr);
    
    print_r($newArr);
    

    输出:

    Array
    (
        [order[items][6][ndc]] => 'This value should not be blank.'
        [order[items][7][ndc]] => 'This value should not be blank.'
    )
    

    【讨论】:

    • 天哪。你真的很棒。非常感谢!
    猜你喜欢
    • 2012-06-10
    • 1970-01-01
    • 2019-04-28
    • 2016-02-05
    • 1970-01-01
    • 2021-07-19
    • 2015-11-11
    • 2015-07-31
    • 1970-01-01
    相关资源
    最近更新 更多