【发布时间】:2010-07-12 20:34:32
【问题描述】:
使用 PHP... 一个例子。这会产生一个警告 - 正如预期的那样 - 并且 $myVar 保持为 bool(true)。
$myVar = true;
$myVar[] = 'Hello'; // Warning: Cannot use a scalar value as an array
但是下一个示例'works',$myVar 被转换为具有单个元素'Hello' 的数组。
$myVar = false;
$myVar[] = 'Hello'; // Converted into an array
结果:
array(1) {
[0]=>
string(5) "Hello"
}
然而 bool(true) 和 bool(false) 都是标量。那么为什么会有差异呢? PHP 中的什么规则控制这种行为?还是“就是这样”?!
我最初认为这可能与类型转换规则有关,但 bool(true) 和 bool(false) 在这方面的行为相同。
谢谢。
【问题讨论】:
-
你到底为什么要做这样的事情呢? :]
-
嗯,这是一个非常简单的例子。一个函数在允许的错误状态下返回一个数组或 (bool)false。然后使用
$myVar[$key]将元素添加到此数组中。在 (bool)false 的情况下,会创建一个新数组 - 很棒。然后有一天该函数做了一些奇怪的事情并返回 int(1) 并且脚本失败了。这让我想知道为什么脚本一开始就使用 (bool)false!