2012-04-22 93 views
8

Dưới đây là một phần mảng đa chiều của tôi:PHP Lấy giá trị đầu tiên của tất cả các mảng trong một mảng đa chiều

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

sẽ cú pháp được gì chỉ cần in height, weight, và ctr_percent? Tôi không có nghĩa là lặp lại nó như:

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

Có cách nào để lặp qua toàn bộ mảng đa chiều và lặp lại giá trị đầu tiên của mỗi mảng con không?

Trả lời

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

Giả sử bạn sử dụng php 5.3:

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

Nếu không, bạn cần phải thực hiện một chức năng gọi lại hoặc chỉ sử dụng đồng bằng cũ foreach

+0

Tôi nghĩ cần lưu ý rằng chỉ hoạt động nếu chỉ mục 0 xảy ra là khóa của phần tử đầu tiên trong mảng. Nó chỉ đơn giản là không trả lại giá trị đầu tiên của subarray nó chỉ trả về giá trị của phần tử với khóa 0 có thể là phần tử đầu tiên. – Christoph

+0

@Christoph phần tử có chỉ số 0 của một mảng được lập chỉ mục số là ngữ nghĩa "giá trị đầu tiên của mảng con". Nếu các mảng lồng nhau không được lập chỉ mục bằng số - thì thực sự không có ý nghĩa gì khi nói về "thứ tự" của chúng. – zerkms

+0

php có một đơn đặt hàng cho từng mảng độc lập với các khóa của nó, ví dụ: trong [1 => 5,0 => 3] mảng trong chỉ số bằng số nhưng vẫn là khóa 1 là phần tử đầu tiên không bằng không. Bạn sẽ luôn luôn lặp qua thứ tự ngầm này bằng cách sử dụng foreach không theo thứ tự sắp xếp của các khóa. Không có mảng đơn giản như trong c như ngôn ngữ. – Christoph

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

Đây là một one-liner:

array_map('array_shift', $array); 

Sẽ trả lại:

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

Và đây là một số khác:

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

Sẽ trả lại:

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

Bạn đang thưởng thức cuộc sống –

0

Tôi nghĩ rằng chức năng tìm kiếm của bạn cho là reset() ví dụ

array_map('reset', $array); 

hoặc

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

Lưu ý rằng việc này ngay cả khi 0 không phải là chỉ số đầu tiên của mảng. Ví dụ. $a = [1=>5,0=>3]; echo reset($a); vẫn sẽ là echo 5;.

Các vấn đề liên quan