Sulla migrazione a PHP 7.4 devo affrontare un diverso comportamento di alcune funzioni di matrice come reset(), current()o end()relativa ArrayObject. L'esempio seguente produce output diversi:
<?php
$array = new \ArrayObject(["a", "b"]);
$item = end($array);
var_dump($item);
$array = ["a", "b"];
$item = end($array);
var_dump($item);
Con php 7.4 l'output è:
bool(false)
string(1) "b"
Nelle versioni PHP precedenti alla 7.4 l'output è il seguente:
string(1) "b"
string(1) "b"
A end($array->getArrayCopy())produce un avviso, ma potrebbe essere una soluzione alternativa se utilizzato con una variabile.
C'è un modo per emulare il comportamento di end()con un ArrayObjecto ArrayIterator? ArrayObject potrebbe essere molto grande, un'iterazione fino alla fine potrebbe non essere la soluzione migliore.
$item = $array[count($array)-1];. Non sono sicuro che sia la soluzione più efficiente.