При переході до PHP 7.4 я маю справу з іншою поведінкою деяких функцій масиву, таких як ArrayObject reset(), current()або end()стосовно них. Наступний приклад дає різні результати:
<?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 може бути дуже великим, ітерація до кінця може бути не найкращим рішенням.
$item = $array[count($array)-1];. Не впевнений, чи це найефективніше рішення.