我有一个方法返回类型可以是一个数组或错误。
因此我将结果转换为数组,以确保我的代码不需要检查false或数组。
但是,php将false转换为包含1个元素的数组:false:
array(1) {
[0]=>
bool(false)
}
WHY!
如果没有if语句,有没有办法实现这个目标?
即
if ($returnValue === false) {
return array();
} else {
return $returnValue;
}
答案 0 :(得分:4)
按设计工作。 The manual specifies:
对于任何类型:
integer
,float
,string
,boolean
和resource
,将值转换为数组会生成一个数组索引为零且转换的标量值的单个元素。换句话说,(array)$scalarValue
与array($scalarValue)
完全相同。
你不能简单地使用ternary operator吗?
return (is_array($returnValue) ? $returnValue : array());