Подтвердить что ты не робот

PHP array_column() не возвращает значения фальши объекта

Я уверен, что это ожидаемое поведение для array_column():

class myObj {
    public $prop;
    public function __construct(int $prop) {
        $this->prop = $prop;
    }
}

$objects = [
    new myObj(7),
    new myObj(3),
    new myObj(8),
    new myObj(0),
    new myObj(2),
    new myObj(6)
];

echo '<pre>';
print_r(array_column($objects, 'prop'));
echo '</pre>';

Возврат:

Array (
    [0] => 7
    [1] => 3
    [2] => 8
    [3] => 2
    [4] => 6
)

Отсутствует 0. Возможно, он использует empty() внутренне..?

Почему бы ему не возвращать значения фальшивости, когда 0 и false могут быть нормальными действительными значениями свойств объекта, а array_column() предназначено для возврата значений.?

Какая самая лучшая работа вокруг.?

4b9b3361

Ответ 1

Это, безусловно, похоже на ошибку, и я сообщал об этом как таковой

Вы можете обойти его, преобразовывая массив объектов во вложенный массив:

print_r(array_column(json_decode(json_encode($objects), true), 'prop'));