ArrayObject
Класс позволяет объектам работать как массивы. Когда я проверяю, ArrayObject
пусто, результат всегда ложный
echo empty(new ArrayObject()); // returns false
Разве это не было бы более согласованным с поведением пустого массива? []
если он вернулся true
?
РНР ArrayObject
не взаимозаменяем с массивами. Большинство функций, связанных с массивами, не будут работать с ним.
empty()
конструкция только определяет, является ли данное значение falsy (игнорируя неопределенные ошибки переменных / индексов). Экземпляр ArrayObject
оценивает true
когда он приведен к логическому значению.
Это будет работать как для массивов, так и для ArrayObject
с (так как они реализуют Countable
):
if (!sizeof($variable)) {
// $variable is an empty array or empty ArrayObject
}
(На мой взгляд, это хорошая вещь. PHP определенно не нуждается в большем количестве магии.)
Других решений пока нет …