php - 展平多维数组但维护键?

标签 php arrays

我有以下内容:

[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)
      }
    }

了解它如何消除重复项并合并每个数组以维护“原始”键。 我试过了:

  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));

为了尝试,您能否发布 var_export您的变量而不是 var_dump

echo(var_export($prod_atts, true));

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

相关文章:

php - 设计一个 PHP 类。正确的方式

php - Android 中的 JSON 异常与服务器端的 PHP 代码

php - PDO 插入引发无法解释的 "Array to string conversion"错误

arrays - 如何在同一行打印一个 bash 数组

php - 如何删除 SQL 查询中的重复条目? (我也可以用PHP实现)

PHP fatal error : Call to undefined function mssql_query()

arrays - 在 BigQuery 中转换数组的所有元素

java - 如何从文件中获取信息(字母和整数),并存储该信息以供进一步使用?

javascript - 如何更好地构建 JSON 中的数组数组

C++:帮我找个bug——二维数组搜索——