PHP查找关联多维数组的最后一个键


PHP Find last key of associative multidimensional array

这就是我尝试过的:

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;
    }
}