2012-04-22 109 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;