在不知道数组键名的情况下引用它们



如果我有这样一个数组:

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

那么print_r($array['something']['more']['id']工作良好。

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

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

可以使用foreach语句。使用递归函数处理嵌套数组(未测试的):

public function iterateNestedArray($array) {
    if (is_array($array)) {
        foreach ($array as $key => $value) {
            print_r(iterateNestedArray($value));
        }
    }
    else {
        return $array;
    }
}

您可以考虑使用第二个参数来实现此函数,以传递回调函数,而不仅仅是print_r每个值。

有多种可能性

可以使用arrayiterator或foreach。

您可以使用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];
}

您可以一如既往地使用reset(), next()end()

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

相关内容

  • 没有找到相关文章

最新更新