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

时间:2012-09-06 04:53:21

标签: php arrays

这就是我的尝试:

foreach ($multiarr as $arr) {
   foreach ($arr as $key=>$val) {
      if (next($arr) === false) {
         //work on last key
      } else {
         //work
      }
   }
}

再看看之后,我认为next在这里使用错了,但我不知道该怎么做。

是否可以查看我是否在此阵列的最后一次迭代中?

5 个答案:

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