如果我有一个这样的数组:引用数组键而不知道名称?
$array = array('something'=>array('more'=>array('id'=> 34)));
然后print_r($array['something']['more']['id']
工作正常。
但是说键名可能会改变,但结构不会。我怎么能在不知道名字的情况下引用相同的值?
我想也许print_r($array[0][1][2]
可能工作,但当然这些键不存在。
如果我有一个这样的数组:引用数组键而不知道名称?
$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
荷兰国际集团的每一个值。
您可以使用reset()
,next()
和end()
一如既往
$array = array('something'=>array('more'=>array('id'=> 34)));
echo reset(reset(reset($array)));
-1此代码吐出E_STRICT错误。 'reset'接受一个引用,因此'reset(reset())'是无效的(引用必须是变量;表达式,比如函数调用,不被接受)。 – netcoder 2011-04-12 14:04:30
有多种可能性。
您可以使用arrayiterator或简单地foreach。 也许即使array_values可能是你的解决方案。
你可以用foreach直环,虽然它是相当难看:
foreach ($grandparent as $gpkey => $parent) {
foreach ($parent as $pkey => $child) {
foreach ($child as $ckey => $value) {
print $gpkey . " - " . $pkey . " - " . $ckey . " = " . $value;
}
}
}
或者你可以得到钥匙给array_keys()
名单:对于联想arrray HTTP
$keys = array_keys($array);
for ($i=0, $imax=count($keys); $i<$imax; $i++) {
print $key . " = " . $array[$key];
}
使用的foreach:/ /php.net/manual/en/control-structures.foreach.php – kjy112 2011-04-12 13:51:08