这就是我尝试过的:
foreach ($multiarr as $arr) {
foreach ($arr as $key=>$val) {
if (next($arr) === false) {
//work on last key
} else {
//work
}
}
}
再看一眼,我觉得next
在这里用错了,但我不知道该怎么办。
有可能看看我是否在这个数组的最后一次迭代中吗?
$lastkey = array_pop(array_keys($arr));
$lastvalue = $arr[$lastkey];
如果您想在循环中使用它,只需比较$lastkey
和$key
您需要保留迭代次数,并根据正在迭代的数组的长度进行检查。PHP中默认的Iterator实现不允许检查next元素是否有效——next有一个void返回,api只公开一个方法来检查当前位置是否有效。请参阅此处http://php.net/manual/en/class.iterator.php.要实现您正在考虑的功能,您必须使用peek()或nextIsValidat()方法实现自己的迭代器。
试试这个:
foreach ($multiarr as $arr) {
$cnt=count($arr);
foreach ($arr as $key=>$val) {
if (!--$cnt) {
//work on last key
} else {
//work
}
}
}
请参阅下面的url,我认为它对您完全有帮助:-
如何获取数组中的最后一个键
如何获取数组中的最后一个键?
更新:
<?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"
这个函数(理论上,我还没有测试过它)将返回多维关联数组中的最后一个也是最深的键。试试看,我想你会喜欢的。
function recursiveEndOfArrayFinder($multiarr){
$listofkeys = array_keys($multiarr);
$lastkey = end($listofkeys);
if(is_array($multiarr[$lastkey])){
recursiveEndOfArrayFinder($multiarr[$lastkey]);
}else{
return $lastkey;
}
}