这就是我的尝试:
foreach ($multiarr as $arr) {
foreach ($arr as $key=>$val) {
if (next($arr) === false) {
//work on last key
} else {
//work
}
}
}
再看看之后,我认为next
在这里使用错了,但我不知道该怎么做。
是否可以查看我是否在此阵列的最后一次迭代中?
答案 0 :(得分:4)
$lastkey = array_pop(array_keys($arr));
$lastvalue = $arr[$lastkey];
如果您想在循环中使用它,只需将$lastkey
与$key
进行比较
答案 1 :(得分:1)
您将需要保留迭代次数,并根据您要迭代的数组的长度进行检查。 PHP中的默认Iterator实现不允许您检查下一个元素是否有效 - next有一个void返回,api只公开一个方法来检查当前位置是否有效。见http://php.net/manual/en/class.iterator.php。要实现您正在考虑的功能,您必须使用peek()或nextIsValid()方法实现自己的迭代器。
答案 2 :(得分:1)
试试这个:
foreach ($multiarr as $arr) {
$cnt=count($arr);
foreach ($arr as $key=>$val) {
if (!--$cnt) {
//work on last key
} else {
//work
}
}
}
答案 3 :(得分:1)
请参阅下面的网址,我认为这对您有所帮助: -
如何获取数组中的最后一个键?
How to get last key in an array?
<强>更新强>
<?php
$array = array(
array(
'first' => 123,
'second' => 456,
'last' => 789),
array(
'first' => 123,
'second' => 456,
'last_one' => 789),
);
foreach ($array as $arr) {
end($arr); // move the internal pointer to the end of the array
$key = key($arr); // fetches the key of the element pointed to by the internal pointer
var_dump($key);
}
输出:
string(4) "last" string(4) "last_one"
答案 4 :(得分:1)
这个函数(理论上,我没有测试过它)将返回多维关联数组中的最后一个和最深的键。给我一个跑步,我想你会喜欢它。
function recursiveEndOfArrayFinder($multiarr){
$listofkeys = array_keys($multiarr);
$lastkey = end($listofkeys);
if(is_array($multiarr[$lastkey])){
recursiveEndOfArrayFinder($multiarr[$lastkey]);
}else{
return $lastkey;
}
}