从两个数组创建多维数组
Posted
技术标签:
【中文标题】从两个数组创建多维数组【英文标题】:Creating a multi dimensional Array from two arrays 【发布时间】:2019-07-25 21:54:57 【问题描述】:我有以下 2 个数组:
Array 1
(
[0] => Speed
[1] => Grade
[2] => Speed
[3] => Grade
[4] => Speed
[5] => Grade
[6] => Grade
[7] => Speed
[8] => Size
)
Array 2
(
[0] => 5200 rpm
[1] => Red
[2] => 7200 rpm
[3] => Blue
[4] => 8900 rpm
[5] => Green
[6] => Purple
[7] => 10000 rpm
[8] => Big
)
这些值相互匹配。例如:Speed - 5200 rpm、Grade - Red 等等。
我需要像下面这样:
$collection = array(
"Speed" => array (
5200 rpm,
7200 rpm,
8900 rpm,
10000 rpm
),
"Grade" => array (
Red,
Blue,
Green,
Purple
),
"Size" => array (
Big
)
);
它需要为每个标签创建一个数组并将必要的值存储到数组中。我尝试过合并、组合和循环。我在某个地方出错了。
谁能帮帮我。
【问题讨论】:
请编辑您的问题并包含您尝试过但未按预期工作的代码。for($i=0; $i<count($array); $i++) if(!isset($new_array[$array[$i]]) $new_array[$array[$i]] = []; $new_array[$array[$i]][] = $array2[$i];
【参考方案1】:
试试这个代码
$array_1 = array('Speed','Grade','Speed','Grade','Speed','Grade','Grade','Speed','Size');
$array_2 = array('5200 rpm','Red','7200 rpm','Blue','8900 rpm','Green','Purple','10000 rpm','Big');
foreach($array_1 as $key=>$elm)
$finalArray[$elm][] = $array_2[$key];
echo("<pre>");
print_r($finalArray);
echo("</pre>");
使用 foreach 您可以使用标签创建新的多维数组!很容易。 希望对你有帮助,有任何问题欢迎评论
【讨论】:
正是我想要的!能否给我解释一下这部分 $finalArray[$elm][] = $array_2[$key]; 非常感谢! @JuanJ 您好,感谢您选择我的答案为最佳。那么 $finalArray 变量显然是新的。并根据需要使用它来形成数组。然后我用array_1的循环键创建数组。然后为 array_1 的所有值创建 $ 键标签(速度、等级、..)。然后我将 array_2 的值与该键相关联。那 [] 是总是为数组创建一个新元素。事实上,如果你删除它,你会看到最终的数组只是 1 个 key-> value。而且它不包括所有数据!【参考方案2】:将数组 1 保存为 $description
,将数组 2 保存为 $value
。
您需要获取两个数组的数组值,使用:
$description = array_values($description);
然后你就可以使用array_combine了。
$combined = array_combine($description, $value);
相关(对于数组值)Convert an associative array to a simple array of its values in php
array_combine
here 的 PHP 文档。
【讨论】:
但数组值只为每个键取一个值(查看您的文档链接) - 不是 OP 想要的【参考方案3】:编辑
我再次阅读问题,发现数组 1 和数组 2 的索引相同
$collection = array();
foreach (array1 as $key => $value)
$collection[$value][] = $array2[$key];
【讨论】:
以上是关于从两个数组创建多维数组的主要内容,如果未能解决你的问题,请参考以下文章