Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 展平多维数组但保留关键点?_Php_Arrays - Fatal编程技术网

Php 展平多维数组但保留关键点?

Php 展平多维数组但保留关键点?,php,arrays,Php,Arrays,我有以下资料: [6199]=> array(12) { ["Origin"]=> array(3) { ["name"]=> array(1) { [0]=> string(4) "Cuba" } ["slug"]=> array(1) { [0]=> string(27) "cuabn-havana-habanos

我有以下资料:

[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];

      }
    }

  }

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

我相信您只是在寻找

  • 允许将数组转换为参数列表
  • 因为最终,您似乎想要去掉数组的第一层
为了尝试它,您是否可以发布变量的值而不是
var\u dump

echo(var_export($prod_atts, true));

通过任何建议的方法合并数组。之后,您将获得重复的值。您只需要保存唯一的项目

$new = array_merge_recursive($resultterms['6199'], $resultterms['6192']);

foreach($new['Origin'] as &$item) { $item = array_unique($item); }
foreach($new['Filler'] as &$item) { $item = array_unique($item); }

可能
调用用户函数数组('array\u merge\u recursive',$resulterms)
$new = array_merge_recursive($resultterms['6199'], $resultterms['6192']);

foreach($new['Origin'] as &$item) { $item = array_unique($item); }
foreach($new['Filler'] as &$item) { $item = array_unique($item); }