我发现了这种奇怪的行为:
$a = $b + $c;
echo $a; //prints 0
在此时打印0:
$a = $b;
echo $a; //doesn't print anything
不打印任何内容 是否可以用有意义的方式解释?
答案 0 :(得分:3)
这是类型杂耍的副作用。未定义的变量$b
和$c
等同于null
。在PHP中,$a = null + null
相当于$a = (int) null + (int) null
,与$a = 0 + 0
相同。这就是$a
等于0的原因。
以下$a = $b
与$a = null
相同,因此当您echo $a
时,不会打印任何内容。
这是一个很好的参考,可以解释类型杂耍 - http://php.net/manual/en/language.types.type-juggling.php
答案 1 :(得分:2)
在一个上下文( System.Net.Http.HttpRequestException: Response status code does not indicate success: 401 (Unauthorized).
... other exceptions here
----------
Restore failed
)中,由于$a = $b + $c
运算符,它们被转换为数字,并且所有数学运算符都适用:+
。
另一方面,它只是一个空变量(未定义的变量设置为NULL)被+, *, -, /
强制转换为字符串。
请参阅http://php.net/manual/en/language.types.type-juggling.php
echo
答案 2 :(得分:0)
输入类型。 PHP尝试在上下文中猜测大多数拟合变量类型并相应地转换值。
<?php
$a = null;
$b = null;
var_dump($a . $b); // string(0) ""
var_dump($a + $b); // 0
var_dump($a / $b); // float(NAN), also warns about Division by zero
var_dump($a - $b); // 0
var_dump($a * $b); // 0
这也是你能做到的原因:
echo "8 beers" + 5; // 13