php在隐式转换中的奇怪行为
奇怪的是,下面的代码返回truephp在隐式转换中的奇怪行为,php,Php,奇怪的是,下面的代码返回true if ('1'==1 && '014'==016) echo 1; 输出是 1 有人能告诉我为什么“014”等于016吗?如何解决这个问题?如果可能的话,可以避免执行显式转换,因为数据类型一直在变化 我在PHP中使用PHP版本5.3.8-ZS5.5.0,使用带前导零的整数值引导PHP假设它是一个八进制数。八进制016等于十进制14 在与另一个整数进行比较时,使用诸如'014'之类的字符串会隐式转换为十进制14 请参见您需要先将字
if ('1'==1 && '014'==016)
echo 1;
输出是
1
有人能告诉我为什么“014”等于016吗?如何解决这个问题?如果可能的话,可以避免执行显式转换,因为数据类型一直在变化
我在PHP中使用PHP版本5.3.8-ZS5.5.0,使用带前导零的整数值引导PHP假设它是一个八进制数。八进制016等于十进制14 在与另一个整数进行比较时,使用诸如
'014'
之类的字符串会隐式转换为十进制14
请参见您需要先将字符串值转换为整数,如下所示:
if(intval('1')==1 && intval('014')==16)
echo 1;
请参见试试这个
<?php
if (ltrim((int)'1',0) == ltrim(1,0) && ltrim((int)'014',0)== ltrim('016', '0'))
echo 1;
你有==
关于这件事,希望我的评论能帮助你…@Hanky웃Panky:the==
始终返回false,即使在if('014'==014)
中也是如此。字符串014
不等于数字014
@phil它太有用了,tnx