2012-04-22 114 views
8

这里有一个部分我多维数组的所有数组的第一个值:PHP获取多维数组

Array ( 
[0] => Array ([0] => Height [1] => 40) 
[1] => Array ([0] => Weight [1] => 15) 
[2] => Array ([0] => Ctr_Percent [1] => 15) 
) 

将语法是什么的只是印刷heightweightctr_percent?我的意思不是附和它像:

echo $array[0][0]; 
echo $array[1][0]; 

有没有一种方式,通过整个多维数组进行迭代,并呼应了每个孩子数组的第一个值?

回答

1
foreach ($main_array as $inner_array){ 
    echo $inner_array[0] . "\n"; 
} 
16

假设你使用PHP 5.3:

$first_elements = array_map(function($i) { 
    return $i[0]; 
}, $data); 

否则,你需要实现一个回调函数或者只是使用普通的老foreach

+0

我认为应该指出,只有在索引0碰巧是数组中第一个元素的关键字时,它才有效。它只是不返回子数组的第一个值,它只是返回元素的值,其中键0可能是第一个元素。 – Christoph 2016-12-06 15:36:55

+0

@Christoph数字索引数组索引为0的元素在语义上是“子数组的第一个值”。如果嵌套数组没有被数字化索引 - 那么完全没有什么意义可以谈论他们的“秩序”了。 – zerkms 2016-12-06 19:20:58

+0

php有一个独立于它的键的顺序,例如,在[1 => 5,0 => 3]中,数字索引中的数组仍然是关键字1是第一个不为零的元素。您将始终使用foreach而不是按键的排序顺序遍历这个隐式顺序。没有像c语言那样的普通数组。 – Christoph 2016-12-07 09:34:01

2
foreach($array as $x) { 
    echo $x[0]."\n"; 
} 
7

这里是一个班轮:

array_map('array_shift', $array); 

将返回:

Array 
(
    [0] => Height 
    [1] => Weight 
    [2] => Ctr_Percent 
) 

这里是另一个问题:

array_combine(array_map('array_shift', $temp), array_map('array_pop', $temp)) 

返回结果:

Array 
(
    [Height] => 40 
    [Weight] => 15 
    [Ctr_Percent] => 15 
) 
+0

你是人生的滋味 – 2017-11-15 16:46:44

0

我想你要找的功能是reset()例如

array_map('reset', $array); 

foreach ($array as $subarray) 
    echo reset($subarray)."\n"; 

请注意,这个工程即使0不是数组的第一个索引。例如。 $a = [1=>5,0=>3]; echo reset($a);仍然会echo 5;