При переході до 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];
. Не впевнений, чи це найефективніше рішення.