PHP array_column() 不返回对象虚假值
PHP array_column() not returning object falsy values
我确定这是 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>';
Returns:
Array (
[0] => 7
[1] => 3
[2] => 8
[3] => 2
[4] => 6
)
缺少 0
。也许它在内部使用 empty()
..?
当 0
和 false
可以是正常的有效对象 属性 值时,为什么它不会 return 虚假值,而 array_column()
用于 return正在计算值..?
最好的解决方法是什么...?
这确实像是一个错误,我会 report it as such
您可以通过将对象数组转换为嵌套数组来解决它:
print_r(array_column(json_decode(json_encode($objects), true), 'prop'));
我确定这是 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>';
Returns:
Array (
[0] => 7
[1] => 3
[2] => 8
[3] => 2
[4] => 6
)
缺少 0
。也许它在内部使用 empty()
..?
当 0
和 false
可以是正常的有效对象 属性 值时,为什么它不会 return 虚假值,而 array_column()
用于 return正在计算值..?
最好的解决方法是什么...?
这确实像是一个错误,我会 report it as such
您可以通过将对象数组转换为嵌套数组来解决它:
print_r(array_column(json_decode(json_encode($objects), true), 'prop'));