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];
。それが最も効率的なソリューションであるかどうかはわかりません。