引用数组键而不知道它们的名字?

时间:2011-04-12 13:49:57

标签: php multidimensional-array

如果我有这样的数组:

$array = array('something'=>array('more'=>array('id'=> 34)));

然后print_r($array['something']['more']['id']正常工作。

但是说关键名称可能会改变,但结构不会。如何在不知道名称的情况下引用相同的值?

我想也许print_r($array[0][1][2]可能有用,但当然这些键不存在。

4 个答案:

答案 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)

有多种可能性。

您可以使用arrayiteratorforeach。 也许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)));