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