如果我有这样的数组:
$array = array('something'=>array('more'=>array('id'=> 34)));
然后print_r($array['something']['more']['id']
正常工作。
但是说关键名称可能会改变,但结构不会。如何在不知道名称的情况下引用相同的值?
我想也许print_r($array[0][1][2]
可能有用,但当然这些键不存在。
答案 0 :(得分:3)
您可以使用foreach
语句。使用递归函数来处理嵌套数组(未经测试的):
public function iterateNestedArray($array) {
if (is_array($array)) {
foreach ($array as $key => $value) {
print_r(iterateNestedArray($value));
}
}
else {
return $array;
}
}
您可以考虑使用第二个参数实现此函数以传递回调函数,而不仅仅是print_r
每个值。
答案 1 :(得分:0)
有多种可能性。
您可以使用arrayiterator或foreach。 也许array_values甚至可能是你的解决方案。
答案 2 :(得分:0)
你可以用foreach做一个直接循环,虽然它相当难看:
foreach ( $grandparent as $gpkey => $parent ) {
foreach ( $parent as $pkey => $child ) {
foreach ( $child as $ckey => $value ) {
print $gpkey . " - " . $pkey . " - " . $ckey . " = " . $value;
}
}
}
或者您可以使用array_keys()
获取密钥列表:
$keys = array_keys($array);
for ( $i=0, $imax=count($keys); $i<$imax; $i++ ) {
print $key . " = " . $array[$key];
}
答案 3 :(得分:-1)
您可以一如既往地使用reset()
,next()
和end()
$array = array('something'=>array('more'=>array('id'=> 34)));
echo reset(reset(reset($array)));