php - 为什么将false转换为数组而不是导致空数组

时间:2013-11-11 17:03:39

标签: php

我有一个方法返回类型可以是一个数组或错误。

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

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

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

WHY!

如果没有if语句,有没有办法实现这个目标?

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

1 个答案:

答案 0 :(得分:4)

按设计工作。 The manual specifies

  

对于任何类型:integerfloatstringbooleanresource,将值转换为数组会生成一个数组索引为零且转换的标量值的单个元素。换句话说,(array)$scalarValuearray($scalarValue)完全相同。

你不能简单地使用ternary operator吗?

return (is_array($returnValue) ? $returnValue : array());