2

这是我尝试过的:

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

再看一遍后,我认为next这里使用错误,但我不知道该怎么办。

是否可以查看我是否在该数组的最后一次迭代中?

4

5 回答 5

4
$lastkey = array_pop(array_keys($arr));
$lastvalue = $arr[$lastkey];

如果你想在循环中使用它,只需$lastkey比较$key

于 2012-09-06T04:59:11.110 回答
1

您将需要保持迭代计数,并根据您正在迭代的数组的长度检查它。PHP 中默认的 Iterator 实现不允许您检查下一个元素是否有效——next 有一个 void 返回,并且 api 只公开了一个方法来检查当前位置是否有效。请参阅此处http://php.net/manual/en/class.iterator.php。要实现您正在考虑的功能,您必须使用 peek() 或 nextIsValid() 方法实现自己的迭代器。

于 2012-09-06T05:00:50.383 回答
1

试试这个:

foreach ($multiarr as $arr) {
   $cnt=count($arr);
   foreach ($arr as $key=>$val) {
      if (!--$cnt) {
         //work on last key
      } else {
         //work
      }
   }
}
于 2012-09-06T05:01:14.550 回答
1

请参阅下面的网址,我认为它对您有帮助:-

如何获取数组中的最后一个键?

如何获取数组中的最后一个键?

更新:

<?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" 
于 2012-09-06T05:04:05.653 回答
1

这个函数(理论上,我没有测试过)将返回多维关联数组中最后一个也是最深的键。给我一个机会,我想你会喜欢的。

function recursiveEndOfArrayFinder($multiarr){

    $listofkeys = array_keys($multiarr);
    $lastkey = end($listofkeys);
    if(is_array($multiarr[$lastkey])){
        recursiveEndOfArrayFinder($multiarr[$lastkey]);
    }else{
    return $lastkey;
    }
}    
于 2012-09-06T05:15:32.267 回答