2014-04-24 53 views
0

关联数组结合我具有低于此关联数组:如何通过索引

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

空槽,我知道把一个文本框来记录数据。 我试过嵌套循环和其他东西,但没有任何工作。 如何将数组组合成基于索引的多维数组?

回答

1

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

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

print_r($result); 

Demo

+0

谢谢!我选择了你的代码,因为代码更短。男人,我在那上了三个小时。 – Naterade

+0

@Naterade:很高兴见到你至少尝试过。是的,有时你会马上找到你想要的东西,有时你需要花费数小时才能完成工作。但我相信,凭借经验,您将能够更快地解决问题。干杯! –

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); 
2
$output = call_user_func_array(
    'array_map', 
    array_merge(
     array(NULL), 
     $input 
    ) 
); 

Demo

+3

从PHP 5.6.0开始,'array_map(null,... $ input)' – salathe