Pada migrasi ke PHP 7.4 saya harus berurusan dengan perilaku yang berbeda dari beberapa fungsi array seperti reset(), current()atau end()mengenai ArrayObject. Contoh berikut menghasilkan output yang berbeda:
<?php
$array = new \ArrayObject(["a", "b"]);
$item = end($array);
var_dump($item);
$array = ["a", "b"];
$item = end($array);
var_dump($item);
Dengan php 7.4 hasilnya adalah:
bool(false)
string(1) "b"
Pada versi PHP sebelum 7.4 output adalah sebagai berikut:
string(1) "b"
string(1) "b"
A end($array->getArrayCopy())menghasilkan pemberitahuan, tetapi mungkin merupakan solusi jika digunakan dengan variabel.
Apakah ada cara untuk meniru perilaku end()dengan ArrayObjectatau ArrayIterator? ArrayObject bisa jadi sangat besar, iterasi sampai akhir mungkin bukan solusi terbaik.
$item = $array[count($array)-1];. Tidak yakin apakah itu solusi yang paling efisien.