使用列值重新排列多维数组

时间:2018-03-27 16:36:48

标签: php multidimensional-array

这里我有两个多维数组。我必须将它们组合成一个多维数组。我试过但它没有发生。我不知道我做错了什么。我想将productId作为索引,然后是值。

使用此代码:

$array1 = Array (
    "3" => Array ( "productId" => 3, "brandName" => "Honor" ),
    "4" => Array ( "productId" => 4, "brandName" => "Puma" )
);
$array2 = Array ( "5" => Array ( "productId" => 5, "brandName" => "Dell" ) ) 
$result = array_merge($array1,$array2);
print_r($result );

我明白了:

Array (
    "0" => Array ( "productId" => 3, "brandName" => "Honor" ),
    "1" => Array ( "productId" => 4, "brandName" => "Puma" ),
    "2" => Array ( "productId" => 5, "brandName" => "Puma" )
)

上述结果不是我预期的答案,因为index会自动分配。就我而言,索引是productId

预期结果:

Array (
    "3" => Array ( "productId" => 3, "brandName" => "Honor" ),
    "4" => Array ( "productId" => 4, "brandName" => "Puma" ),
    "5" => Array ( "productId" => 5, "brandName" => "Dell" )
)

2 个答案:

答案 0 :(得分:1)

array_column非常适合这种情况。只需为列密钥传递null,为索引键传递"productId"

$result = array_merge($array1, $array2);
$final = array_column($result, null, "productId");

答案 1 :(得分:0)

预计array_merge

  

带有数字键的输入数组中的值将使用从结果数组中的零开始的递增键重新编号。

您可能已经发现,“数字”还包括数字字符串。

您的产品ID似乎已用作数组键,因此您应该可以使用+ (union) operator来获得所需的结果。

$result = $array1 + $array2;