繁体   English   中英

PHP:如何将多个关联数组组合成多维数组?

[英]PHP: How do I combine multiple associative arrays into a multidimensional array?

考虑一下php中的三个关联数组:

$a1 = array(
"a" => "1",
"b" => "2",
"c" => "3"
);

$a2 = array(
"d" => "4",
"e" => "5",
"f" => "6"
);

$a3 = array(
"g" => "7",
"h" => "8",
"i" => "9"
);

您如何将它们有效地组合成多维数组,如下所示:

$result = array(
"1" => array("4","7"),
"2" => array("5","8"),
"3" => array("6","9")
);

提前致谢!

非常坦率的:

foreach($a1 as $val) {
    $result[$val] = array(array_shift($a2), array_shift($a3));
}

与昨晚我回答的几个问题非常相似:

$a1 = array(
"a" => "1",
"b" => "2",
"c" => "3"
);

$a2 = array(
"d" => "4",
"e" => "5",
"f" => "6"
);

$a3 = array(
"g" => "7",
"h" => "8",
"i" => "9"
);

$x = array_combine(
    $a1,
    call_user_func_array('array_map', [null, $a2, $a3])
);
var_dump($x);

你是这个意思吗?

  <?php

$a1 = array(
    "a" => "1",
    "b" => "2",
    "c" => "3"
);

$a2 = array(
    "d" => "4",
    "e" => "5",
    "f" => "6"
);

$a3 = array(
    "g" => "7",
    "h" => "8",
    "i" => "9"
);

$a1_ = array_values($a1);
$a2_ = array_values($a2);
$a3_ = array_values($a3);

$newarray = array();
$max = count($a1_);
for($i = 0; $i < $max; $i++) {
    $newarray[$a1_[$i]] = array($a2_[$i], $a3_[$i]);
}

var_dump($newarray);

哪个输出

array(3) {
  [1]=>
  array(2) {
    [0]=>
    string(1) "4"
    [1]=>
    string(1) "7"
  }
  [2]=>
  array(2) {
    [0]=>
    string(1) "5"
    [1]=>
    string(1) "8"
  }
  [3]=>
  array(2) {
    [0]=>
    string(1) "6"
    [1]=>
    string(1) "9"
  }
}

首先,将所有数组合并为一个多维数组。

$arrays = array();
array_push($arrays,$a1) //Do the same for the rest

创建另一个数组并遍历刚刚创建的数组。

$result = array();
foreach($arrays as $a) {
    $result[$a[0]] = array_shift($a);
}

这会将第一个值从数组中拉出并使其成为键。 然后,它使用array_shift弹出数组的第一个元素,因此它不包含在分配中。

这是否符合您的需求?

注意:这对于任何大小的数组和任意数量的数组都是可缩放的。 只需使用array_push将要包含在$ arrays中的任何数组添加,它将遵循您上面概述的模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM