Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么字符串在PHP中等于整数0?_Php_Codeigniter - Fatal编程技术网

为什么字符串在PHP中等于整数0?

为什么字符串在PHP中等于整数0?,php,codeigniter,Php,Codeigniter,在PHP7中,我这样做了。输出应该是0,对吗?但是我得到了1。为什么 <?php echo "a"==0?1:0; ?> a==0的计算结果为true 因为与整数相比,任何字符串都会转换为整数。如果PHP无法正确转换字符串,则其计算结果为0。所以0等于0,这等于真 如果希望答案为0 您应该使用===而不是== 因为普通运算符不比较类型。相反,它将尝试对项目进行类型转换 同时===考虑了项目的类型 ==意味着等于 ==表示eeeeh。。有点像 此外,还提供了PHP

在PHP7中,我这样做了。输出应该是0,对吗?但是我得到了1。为什么

 <?php
     echo "a"==0?1:0;
    ?>

a==0的计算结果为true

因为与整数相比,任何字符串都会转换为整数。如果PHP无法正确转换字符串,则其计算结果为0。所以0等于0,这等于真

如果希望答案为0

您应该使用===而不是==

因为普通运算符不比较类型。相反,它将尝试对项目进行类型转换

同时===考虑了项目的类型

==意味着等于

==表示eeeeh。。有点像

此外,还提供了PHP手册以供比较

供参考,摘自PHP手册:

字符串到数字的转换

在数值上下文中计算字符串时,结果值和类型的确定如下所示

如果字符串包含“.”、“e”或“e”中的任何字符,则该字符串将被计算为浮点值。否则,它将作为整数计算

该值由字符串的初始部分给出。如果字符串以有效的数字数据开头,则将使用该值。否则,该值将为0。有效数字数据是可选符号,后跟一个或多个数字(可选包含小数点),后跟可选指数。指数是一个“e”或“e”,后跟一个或多个数字


a==0的计算结果为true

因为与整数相比,任何字符串都会转换为整数。如果PHP无法正确转换字符串,则其计算结果为0。所以0等于0,这等于真

如果希望答案为0

您应该使用===而不是==

因为普通运算符不比较类型。相反,它将尝试对项目进行类型转换

同时===考虑了项目的类型

==意味着等于

==表示eeeeh。。有点像

此外,还提供了PHP手册以供比较

供参考,摘自PHP手册:

字符串到数字的转换

在数值上下文中计算字符串时,结果值和类型的确定如下所示

如果字符串包含“.”、“e”或“e”中的任何字符,则该字符串将被计算为浮点值。否则,它将作为整数计算

该值由字符串的初始部分给出。如果字符串以有效的数字数据开头,则将使用该值。否则,该值将为0。有效数字数据是可选符号,后跟一个或多个数字(可选包含小数点),后跟可选指数。指数是一个“e”或“e”,后跟一个或多个数字


php7文件正在解释所有案例。 再举个例子

var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true

php7文件正在解释所有案例。 再举个例子

var_dump(0 == "a"); // 0 == 0 -> true
var_dump("1" == "01"); // 1 == 1 -> true
var_dump("10" == "1e1"); // 10 == 10 -> true
var_dump(100 == "1e2"); // 100 == 100 -> true

回声a==0?1 : 0; 严格相等检查回声a===0?1 : 0; 严格的相等性检查但为什么在python中a==0为false?python不是C。与C不同,python支持任意类型之间的相等性测试。这里没有“how”,字符串不支持对整数的相等性测试,整数不支持对字符串的相等性测试。因此Python回到默认的身份测试行为,但是对象不是同一个对象,因此结果为False。但是为什么在Python中a==0为False?Python不是C。与C不同,Python支持任意类型之间的相等测试。这里没有“how”,字符串不支持对整数的相等性测试,整数不支持对字符串的相等性测试。因此Python退回到默认的身份测试行为,但对象不是同一个对象,因此结果为False。