2011-07-25 39 views
3

我有一個頁面用於搜索數據庫並生成以下數組。我希望能夠循環訪問數組,並選擇下一個分配給「contact_id」鍵的值並對其進行處理,但我不知道如何降低到該數組的水平。從多維數組中獲取關鍵值

該數組是動態生成的,因此根據我在「值」下搜索索引編號的內容會相應地改變。

我想我必須做一個foreach下的值開始,但我不知道如何開始在一個數組的sublevel foreach。

Array ( 
[is_error] => 0 
[version] => 3 
[count] => 2 
[values] => Array ( 
    [556053] => Array ( 
     [contact_id] => 556053 
     [contact_type] => Individual 
     [first_name] => Brian 
     [last_name] => YYY 
     [contact_is_deleted] => 0 
    ) 
    [596945] => Array ( 
     [contact_id] => 596945 
     [contact_type] => Individual 
     [first_name] => Brian 
     [last_name] => XXX 
     [contact_is_deleted] => 0 
    ) 
) 

我看了下面的文章,但它似乎只能解決其中數組索引是連續的情況。 Multidimensional array - how to get specific values from sub-array

任何想法?

布賴恩

+1

您是否在其他問題中嘗試過該解決方案?提示:'foreach($ array ['values]爲$ contacts){...}' – Gordon

+1

使用'foreach'而不是'for'。或者,有'array_keys()'返回數組中的所有鍵。 – hakre

+0

隨機深度數組請參閱http://stackoverflow.com/questions/2416100/how-to-search-through-subarrays-efficiently-in-php/2416306#2416306 – Gordon

回答

3

你在你的假設是正確的。你可以這樣做:

foreach($array['values'] as $key => $values) { 
    print $values['contact_id']; 
} 

這應該演示從子級開始。我還要補充你的檢查,看其是否空的,如果一個數組...等

+0

優秀。謝謝。 – bpmccain

1
foreach($array['values'] as $sub_arr){ 
    echo $sub_arr['contact_id']; 
} 
3

關於語法另一個提示 - 如果你原來的例子中,數組稱爲$一個,那麼你值想在這裏:

$a['values'][556053]['contact_id'] 

這裏:

$a['values'][596945]['contact_id'] 

所以,如果有你的數組中沒有額外的結構,那麼這個循環可能是你想要什麼:

foreach ($a['values'] as $toplevel_id => $record_data) { 
    print "for toplevel_id=[$toplevel_id], contact_id=[" . $record_data['contact_id'] . "]\n"; 
}