Dotyczące migracji do PHP 7.4 mam do czynienia z innym zachowaniem pewnych funkcji, takich jak tablicy reset(), current()lub end()dotycząca ArrayObject. Poniższy przykład przedstawia różne wyniki:
<?php
$array = new \ArrayObject(["a", "b"]);
$item = end($array);
var_dump($item);
$array = ["a", "b"];
$item = end($array);
var_dump($item);
W przypadku php 7.4 wynikiem jest:
bool(false)
string(1) "b"
W wersjach PHP wcześniejszych niż 7.4 wyniki są następujące:
string(1) "b"
string(1) "b"
A end($array->getArrayCopy())generuje powiadomienie, ale może być obejściem, jeśli jest używane ze zmienną.
Czy istnieje sposób naśladowania zachowania end()za pomocą ArrayObjectlub ArrayIterator? ArrayObject może być bardzo duży, iteracja do końca może nie być najlepszym rozwiązaniem.
$item = $array[count($array)-1];. Nie jestem pewien, czy jest to najbardziej wydajne rozwiązanie.