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 ArrayObject
o 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.