如何通过索引组合关联数组

时间:2014-04-24 17:59:14

标签: php arrays multidimensional-array indexing

我在下面有这个关联数组:

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] =>  
    )
)

空槽是我知道放置文本框来记录数据的地方。 我已经尝试嵌套循环和其他东西,但没有任何工作。 如何基于索引将数组组合成多维数组?

3 个答案:

答案 0 :(得分:2)

$output = call_user_func_array(
    'array_map',
    array_merge(
        array(NULL),
        $input
    )
);

Demo

答案 1 :(得分:1)

您可以使用嵌套循环实现此目的。首先循环遍历子数组。在每次迭代中,遍历子数组中的元素,并将它们添加到结果数组中。这里的重要部分是我们用作$result数组的索引。 $index将是子数组中数组元素的位置。例如,Category的索引为0,因此会将其推送到$result[0][]

foreach ($array as $sub) {
    foreach ($sub as $index => $val) {
        $result[$index][] = $val;
    }
}

print_r($result);

Demo

答案 2 :(得分:1)

这是一个快速的方法 - 它实际上翻转了键。顺便说一下,你拥有的第一个数组是一个索引数组,而不是一个关联数组。

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