2011-07-25 43 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"; 
}