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