在迁移到 PHP 7.4 时,我必须处理一些数组函数的不同行为,例如reset()
ArrayObjectcurrent()
或end()
有关 ArrayObject。以下示例产生不同的输出:
<?php
$array = new \ArrayObject(["a", "b"]);
$item = end($array);
var_dump($item);
$array = ["a", "b"];
$item = end($array);
var_dump($item);
使用php 7.4的输出是:
bool(false)
string(1) "b"
在 7.4 之前的 PHP 版本上,输出如下:
string(1) "b"
string(1) "b"
Aend($array->getArrayCopy())
会产生通知,但如果与变量一起使用,则可能是一种解决方法。
有没有办法模仿orend()
的行为?ArrayObject 可能非常大,迭代到最后可能不是最佳解决方案。ArrayObject
ArrayIterator