我有以下代码:
$item['price'] = 0;
/*code to get item information goes in here*/
if($item['price'] == 'e') {
$item['price'] = -1;
}
Run Code Online (Sandbox Code Playgroud)
它旨在将项目价格初始化为0,然后获取有关它的信息.如果价格被告知为'e',则意味着交换而不是卖出,其用负值表示,因为它将被存储在需要数值的数据库中.
还有可能将价格保留为0,因为该项目是奖金或因为价格将在稍后设定.
但是,总是在没有设置价格时,它使初始值为0,上面指出的if循环评估为真,价格设置为-1.也就是说,它认为0等于'e'.
怎么解释这个?
编辑:当价格提供为0(初始化后)时,行为不稳定:有时if评估为true,有时评估为false.
我truth在PHP中有点困惑.
我的理解是0计算为false,非空字符串(除非字符串为"0")计算为true.
这是我所期望的:
var_dump((bool) 0); // prints "boolean false"
var_dump((bool) 'someString'); // prints "boolean true"
Run Code Online (Sandbox Code Playgroud)
但后来我对以下结果感到惊讶:
var_dump((0=='someString')); // prints "boolean true"
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么0=='someString'评价为真?
有人可以向我解释为什么这些代码返回"TRUE".我知道我应该使用"==="而不是"=="但我会跑到这个代码并想知道为什么它会返回true.提前致谢.
<?php
$s = "final";
$i = 0;
if($s == $i){
echo "TRUE";
}else{
echo "FALSE";
}
Run Code Online (Sandbox Code Playgroud) <?php
// your code goes here
if (0 == "asdf")
echo "same";
else
echo "not same";
Run Code Online (Sandbox Code Playgroud)
你好,为什么这段代码打印"相同",而不是"不相同"?我对这个奇怪的结果有点困惑.这是一个错误吗?
执行结果:请参阅http://ideone.com/wfWRlq