เกี่ยวกับการย้ายไป PHP 7.4 ผมต้องจัดการกับพฤติกรรมที่แตกต่างกันของฟังก์ชั่นบางอย่างเช่นอาร์เรย์reset()
, current()
หรือend()
เกี่ยวกับ ArrayObject ตัวอย่างต่อไปนี้สร้างเอาต์พุตที่ต่างกัน:
<?php
$array = new \ArrayObject(["a", "b"]);
$item = end($array);
var_dump($item);
$array = ["a", "b"];
$item = end($array);
var_dump($item);
ด้วยphp 7.4ผลลัพธ์คือ:
bool(false)
string(1) "b"
ในเวอร์ชัน PHP ก่อนหน้า 7.4 ผลลัพธ์จะเป็นดังนี้:
string(1) "b"
string(1) "b"
A end($array->getArrayCopy())
สร้างการแจ้งเตือน แต่อาจเป็นการแก้ไขหากใช้กับตัวแปร
มีวิธีที่จะเลียนแบบพฤติกรรมของที่end()
มีสระArrayObject
หรือArrayIterator
? ArrayObject อาจมีขนาดใหญ่มากการทำซ้ำไปจนสุดอาจไม่ใช่ทางออกที่ดีที่สุด
$item = $array[count($array)-1];
ทางเลือกที่อาจจะ ไม่แน่ใจว่าเป็นทางออกที่มีประสิทธิภาพที่สุดหรือไม่