下面有一个关联数组:
Array
(
[0] => Array
(
[0] => Category
[1] => fruit
[2] => carbs
)
[1] => Array
(
[0] => Day 1 - Program
[1] => Eat banana
[2] => Eat bread
)
[2] => Array
(
[0] => Day 1 - record
[1] =>
[2] =>
)
)
每个数组索引与其他数组中的相同索引相关。我现在需要通过组合索引来创建3个数组。完成的阵列将看起来像这样:
Array
(
[0] => Array
(
[0] => Category
[1] => Day 1 - Program
[2] => Day 1 - record
)
[1] => Array
(
[0] => fruit
[1] => Eat banana
[2] =>
)
[2] => Array
(
[0] => carbs
[1] => bread
[2] =>
)
)
空槽是我知道要放一个文本框来记录数据的地方。我试过为循环和其他东西嵌套,但什么都不起作用。如何根据索引将数组组合成多维数组?
$output = call_user_func_array(
'array_map',
array_merge(
array(NULL),
$input
)
);
演示
您可以通过嵌套循环来实现这一点。首先循环通过子阵列。在每次迭代中,循环遍历子数组中的元素,并将它们添加到结果数组中。这里的重要部分是我们使用什么作为$result
数组的索引。CCD_ 2将是阵列元素在子阵列中的位置。例如,Category
的索引为0,因此它将被推送到$result[0][]
。
foreach ($array as $sub) {
foreach ($sub as $index => $val) {
$result[$index][] = $val;
}
}
print_r($result);
演示
这里有一个快速的方法——它本质上是翻转键。顺便说一句,您拥有的第一个数组是索引数组,而不是关联数组。
$input = array(
array
(
"Category", "fruit", "carbs"
),
array
(
"Day 1 - Program","Eat banana","Eat bread"
),
array
(
"Day 1 - record", "", ""
)
);
foreach ($input as $key => $array){
foreach ($array as $k => $v){
$output[$k][$key] = $input[$key][$k];
}
}
print_r($output);