如何将两个数组组合为键和值?



在一个数组中有键,在另一个数组中有值。我想以一种方式组合这两个数组 array1 的所有键和 array2 的所有值,如下所示。如何在 PHP 中完成?

这是两个数组

Array
(
[0] => url
[1] => downloadName
[2] => downloadType
[3] => downloadSize
[4] => url
[5] => downloadName
[6] => downloadType
[7] => downloadSize
)
Array
(
[0] => https://www.clearcube.com/support/controller/downloads.php?id=450
[1] => F6151 Media Converter System with 100 base TX to 100 base FX.pdf
[2] => Manual
[3] => 0.39
[4] => https://www.clearcube.com/support/controller/downloads.php?id=582
[5] => G0400147 Rev B.xlsx
[6] => Manual
[7] => 0.37
)

我需要这种格式。

Array
(
[url] => Array(
[0] => https://www.clearcube.com/support/controller/downloads.php?id=450
[1] => https://www.clearcube.com/support/controller/downloads.php?id=582
)
[downloadName] => Array(
[0] => F6151 Media Converter System with 100 base TX to 100 base FX.pdf
[1] => G0400147 Rev B.xlsx
)
[downloadType] => Array(
[0] => Manual
[1] => Manual
)
[downloadSize] => Array(
[0] => 0.39
[1] => 0.37
)
)

array_walk((的帮助下,您可以轻松组合它。

$keys = ['url','downloadName','downloadType','downloadSize','url','downloadName','downloadType','downloadSize'];
$values = [ 'https://www.clearcube.com/support/controller/downloads.php?id=450', 'F6151 Media Converter System with 100 base TX to 100 base FX.pdf', 'Manual', 0.39, 'https://www.clearcube.com/support/controller/downloads.php?id=582', 'G0400147 Rev B.xlsx', 'Manual', 0.37 ];
$result = [];
array_walk($keys, function ($val, $key) use (&$result, $values) { $result[$val][] = $values[$key]; });
print_r($result);

工作演示

输出:

Array
(
[url] => Array
(
[0] => https://www.clearcube.com/support/controller/downloads.php?id=450
[1] => https://www.clearcube.com/support/controller/downloads.php?id=582
)
[downloadName] => Array
(
[0] => F6151 Media Converter System with 100 base TX to 100 base FX.pdf
[1] => G0400147 Rev B.xlsx
)
[downloadType] => Array
(
[0] => Manual
[1] => Manual
)
[downloadSize] => Array
(
[0] => 0.39
[1] => 0.37
)
)

一个简单的方法是

$result = [];
foreach ($array1 as $key1 => $value1) {
$result[$value1][] = $array2[$key1];
}

实施验证并独立于索引

if (count($array1) == count($array2)) {
$result = [];
$i = 0;
foreach ($array1 as $value1) {
$j=0;
foreach ($array2 as $value2) {
if ($j == $i) {
$result[$value1][] = $value2;
break;
}
$j++;
}
$i++;
}
var_dump($result);
}

假设键数组为 $arr 1,数据数组为 $arr 2,那么您可以运行以下循环并通过以下方法创建新数组

$new_arr = []
foreach($arr1 as $key=>$arr){
$new_arr[$arr][] = $arr2[$key];
}
//final array is $new_arr

您可以使用基于索引的方法,首先检查数组的长度是否相同。

循环数组 1 中的键,并为该键添加数组 2 中的值。

$result = [];
if (count($array1) === count($array2)) {
for ($i = 0; $i < count($array1); $i++) {
$result[$array1[$i]][] = $array2[$i];
}
}
print_r($result);

Php 演示

结果

Array
(
[url] => Array
(
[0] => https://www.clearcube.com/support/controller/downloads.php?id=450
[1] => https://www.clearcube.com/support/controller/downloads.php?id=582
)
[downloadName] => Array
(
[0] => F6151 Media Converter System with 100 base TX to 100 base FX.pdf
[1] => G0400147 Rev B.xlsx
)
[downloadType] => Array
(
[0] => Manual
[1] => Manual
)
[downloadSize] => Array
(
[0] => 0.39
[1] => 0.37
)
)

最新更新