Lors de la migration vers PHP 7.4, je dois faire face à un comportement différent de certaines fonctions de tableau comme reset()
, current()
ou end()
concernant ArrayObject. L'exemple suivant produit différentes sorties:
<?php
$array = new \ArrayObject(["a", "b"]);
$item = end($array);
var_dump($item);
$array = ["a", "b"];
$item = end($array);
var_dump($item);
Avec php 7.4, la sortie est:
bool(false)
string(1) "b"
Sur les versions PHP antérieures à 7.4, la sortie est la suivante:
string(1) "b"
string(1) "b"
A end($array->getArrayCopy())
produit un avis, mais peut être une solution de contournement s'il est utilisé avec une variable.
Existe-t-il un moyen d'émuler le comportement de end()
avec ArrayObject
ou ArrayIterator
? ArrayObject peut être très volumineux, une itération à la fin n'est peut-être pas la meilleure solution.
$item = $array[count($array)-1];
. Je ne sais pas si c'est la solution la plus efficace.