【问题标题】: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];}

标签: php arrays loops


【解决方案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];
}

【讨论】:

    猜你喜欢
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多