3

我有一个方法返回类型可以是一个数组,也可以是 false。

因此,我将结果转换为数组以尝试确保我的代码不需要检查 false 或数组。

但是,php 将 false 转换为包含 1 个元素的数组:false:

array(1) {
  [0]=>
  bool(false)
}

为什么!

有没有办法在没有 if 语句的情况下实现这一点?

IE

if ($returnValue === false) {
    return array();
} else {
    return $returnValue;
}
4

1 回答 1

6

按设计工作。该手册规定

对于任何类型:integerfloat、和string,将值转换为数组会产生一个数组,其中包含一个索引为零的元素和转换后的标量值。换句话说,与 完全相同。booleanresource(array)$scalarValuearray($scalarValue)

你不能简单地使用三元运算符吗?

return (is_array($returnValue) ? $returnValue : array());
于 2013-11-11T17:08:28.603 回答