我有以下资料:

[6199]=>
  array(12) {
    ["Origin"]=>
    array(3) {
      ["name"]=>
      array(1) {
        [0]=>
        string(4) "Cuba"
      }
      ["slug"]=>
      array(1) {
        [0]=>
        string(27) "cuabn-havana-habanos-cigars"
      }
      ["id"]=>
      array(1) {
        [0]=>
        int(0)
      }
    }
    ["Filler"]=>
    array(3) {
      ["name"]=>
      array(2) {
        [0]=>
        string(9) "Dominican"
        [1]=>
        string(10) "Nicaraguan"
      }
      ["slug"]=>
      array(2) {
        [0]=>
        string(9) "dominican"
        [1]=>
        string(10) "nicaraguan"
      }
      ["id"]=>
      array(2) {
        [0]=>
        int(0)
        [1]=>
        int(1)
      }
    }
  }
  [6192]=>
  array(11) {
    ["Origin"]=>
    array(3) {
      ["name"]=>
      array(1) {
        [0]=>
        string(9) "Nicaragua"
      }
      ["slug"]=>
      array(1) {
        [0]=>
        string(27) "nicaraguan-new-world-cigars"
      }
      ["id"]=>
      array(1) {
        [0]=>
        int(0)
      }
    }
    ["Filler"]=>
      array(3) {
        ["name"]=>
        array(2) {
          [0]=>
          string(9) "Java"
          [1]=>
          string(10) "Nicaraguan"
        }
        ["slug"]=>
        array(2) {
          [0]=>
          string(9) "java"
          [1]=>
          string(10) "nicaraguan"
        }
        ["id"]=>
        array(2) {
          [0]=>
          int(0)
          [1]=>
          int(1)
        }
      }
  }

我的预期产出是:
  array(12) {
    ["Origin"]=>
    array(3) {
      ["name"]=>
      array(1) {
        [0]=>
        string(4) "Cuba".
        [1]=>
        string(9) "Nicaragua"
      }
      ["slug"]=>
      array(1) {
        [0]=>
        string(27) "cuabn-havana-habanos-cigars",
        [0]=>
        string(27) "nicaraguan-new-world-cigars"
      }
      ["id"]=>
      array(1) {
        [0]=>
        int(0)
      }
    }
    ["Filler"]=>
    array(3) {
      ["name"]=>
      array(2) {
        [0]=>
        string(9) "Dominican"
        [1]=>
        string(10) "Nicaraguan"
        [2]=>
        string(9) "Java"
      }
      ["slug"]=>
      array(2) {
        [0]=>
        string(9) "dominican"
        [1]=>
        string(10) "nicaraguan"
        [3]=>
        string(9) "java"
      }
      ["id"]=>
      array(2) {
        [0]=>
        int(0)
        [1]=>
        int(1)
      }
    }

看看它如何消除重复和合并保持“origin”键的每个数组。
我试过:
  foreach ($resultterms as $keyname => $valuename){

    foreach ($valuename as $keysub => $valuesub) {

      foreach($valuesub['name'] as $keysubsub => $valuesubsub){

        # code...
        $prods_atts[$keysub]['name'][$keysubsub] = $valuesubsub;
        $prods_atts[$keysub]['slug'][$keysubsub] = $valuesub['slug'][$keysubsub];
        $prods_atts[$keysub]['id'][$keysubsub] = $valuesub['id'][$keysubsub];

      }
    }

  }

其中$resultterms是原始数组,但它不起作用。我想知道是否有一个很棒的php函数可以用来合并它们,而不是为每个循环嵌套这么多?

最佳答案

我相信你只是在寻找array_merge_recursive

call_user_func_array('array_merge_recursive', array_values($prod_atts));

call_user_func_array允许将数组转换为参数列表
array_values因为最后,你似乎想去掉数组的第一层
为了试一下,你能把变量的var_export而不是var_dump贴出来吗?
echo(var_export($prod_atts, true));

关于php - 展平多维数组但保持键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31221229/

10-11 06:15
查看更多