如何按索引组合关联数组



下面有一个关联数组:

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);

相关内容

  • 没有找到相关文章

最新更新