我有三个数组例如
Array1
array (size=3)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
2 => string 'c' (length=1)
Array2
array (size 3)
0 => string '$' (length=1)
1 => string '%' (length=1)
2 => string '^' (length=1)
Array3
array (size 3)
0 => int '1' (length=1)
1 => int '2' (length=1)
2 => int '3' (length=1)
我希望array4具有这种配置,每个阵列的每一行应该是一个组。例如
Array4
0th
name=a
type=$
price=1
1st
name=b
type=%
price=2
2nd
name=c
type=^
price=3
我试过这个并给了我完美的结果
$output = array_combine($array1, $array2);
但是当我尝试这个时,它不会给出预期的结果
$output = array_combine(array_combine($array, $array2),$array3);
答案 0 :(得分:2)
如果您知道所有三个数组都具有相同的长度并且具有所有必需的数据,那么一个简单的修复就是迭代该长度并构建结果数组:
$result = [];
$count = count($array1);
for($i=0; $i < $count; $i++){
$result[$i] = [
'name'=>$array1[$i],
'type'=>$array2[$i],
'price'=>$array3[$i]
];
}
$result
拥有您需要的东西。您正在尝试的内容 - array_combined()
- 不是用其他值创建一个数组,因此它不能用于此目的。该函数用于构建一个数组,其键来自一个数组,而值来自另一个数组。
答案 1 :(得分:1)
使用array_map
和array_combine
函数的简单解决方案:
$result = array_map(function($item) {
return array_combine(['name', 'type', 'price'], $item);
}, array_map(null, $array1, $array2, $array3));
print_r($result);
输出:
Array
(
[0] => Array
(
[name] => a
[type] => $
[price] => 1
)
[1] => Array
(
[name] => b
[type] => %
[price] => 2
)
[2] => Array
(
[name] => c
[type] => ^
[price] => 3
)
)