Auf der Migration auf PHP 7.4 Ich habe mit einem anderen Verhalten einiger Array - Funktionen wie zu behandeln reset(), current()oder end()über Arrayobject. Das folgende Beispiel erzeugt verschiedene Ausgaben:
<?php
$array = new \ArrayObject(["a", "b"]);
$item = end($array);
var_dump($item);
$array = ["a", "b"];
$item = end($array);
var_dump($item);
Mit PHP 7.4 ist die Ausgabe:
bool(false)
string(1) "b"
In PHP-Versionen vor 7.4 lautet die Ausgabe wie folgt:
string(1) "b"
string(1) "b"
A end($array->getArrayCopy())erzeugt einen Hinweis, kann jedoch eine Problemumgehung sein, wenn es mit einer Variablen verwendet wird.
Gibt es eine Möglichkeit, das Verhalten von end()mit einem ArrayObjectoder zu emulieren ArrayIterator? Das ArrayObject kann sehr groß sein, eine Iteration bis zum Ende ist möglicherweise nicht die beste Lösung.
$item = $array[count($array)-1];. Ich bin mir nicht sicher, ob dies die effizienteste Lösung ist.