使用PHP反向迭代数组 - SPL解决方案?

2022-08-30 14:02:56

PHP中是否有SPL反向数组迭代器?如果没有,实现它的最佳方式是什么?

我可以简单地做

$array = array_reverse($array);
foreach($array as $currentElement) {}

for($i = count($array) - 1; $i >= 0; $i--)
{

}

但是有没有更优雅的方式呢?


答案 1

下面是一个不复制也不修改数组的解决方案:

for (end($array); key($array)!==null; prev($array)){
  $currentElement = current($array);
  // ...
}

如果还需要对当前键的引用:

for (end($array); ($currentKey=key($array))!==null; prev($array)){
  $currentElement = current($array);
  // ...
}

这总是有效的,因为php数组键永远不会是空的,并且比这里给出的任何其他答案都快。


答案 2
$item=end($array);
do {
...
} while ($item=prev($array));

推荐