При переходе на PHP 7.4 мне приходится иметь дело с другим поведением некоторых функций массива, таких как reset()
, current()
или 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"
Вкл. PHP версии до 7.4. следующее:
string(1) "b"
string(1) "b"
A end($array->getArrayCopy())
создает уведомление, но может использоваться в качестве обходного пути при использовании с переменной.
Есть ли способ эмулировать поведение end()
с ArrayObject
или ArrayIterator
? ArrayObject может быть очень большим, итерация до конца может оказаться не лучшим решением.