从两个数组创建多维数组

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 rpmGrade - 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_combinehere 的 PHP 文档。

【讨论】:

但数组值只为每个键取一个值(查看您的文档链接) - 不是 OP 想要的【参考方案3】:

编辑

我再次阅读问题,发现数组 1 和数组 2 的索引相同

$collection = array();
foreach (array1 as $key => $value)
    $collection[$value][] = $array2[$key];

【讨论】:

以上是关于从两个数组创建多维数组的主要内容,如果未能解决你的问题,请参考以下文章

从两个多维数组中选择常用数组 - PHP

如果数组存在于另一个多维数组中,如何从多维数组中删除该数组? [复制]

从数组和多维数组创建 JSON 对象

从匹配的数组键创建多维数组

PHP从具有关系数据的数组创建多维数组[重复]

从字符串创建多维数组[重复]