Khi chuyển sang PHP 7.4, tôi phải xử lý một hành vi khác của một số hàm mảng như reset()
, current()
hoặc end()
liên quan đến ArrayObject. Ví dụ sau đây tạo ra các đầu ra khác nhau:
<?php
$array = new \ArrayObject(["a", "b"]);
$item = end($array);
var_dump($item);
$array = ["a", "b"];
$item = end($array);
var_dump($item);
Với php 7.4 , đầu ra là:
bool(false)
string(1) "b"
Trên các phiên bản PHP trước 7.4, đầu ra là như sau:
string(1) "b"
string(1) "b"
A end($array->getArrayCopy())
tạo ra một thông báo, nhưng có thể là một cách giải quyết nếu được sử dụng với một biến.
Có cách nào để mô phỏng hành vi của end()
với ArrayObject
hay ArrayIterator
không? ArrayObject có thể rất lớn, việc lặp lại đến cuối có thể không phải là giải pháp tốt nhất.
$item = $array[count($array)-1];
. Không chắc chắn nếu đó là giải pháp hiệu quả nhất.