php在隐式转换中的奇怪行为

php在隐式转换中的奇怪行为,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 请参见您需要先将字

奇怪的是,下面的代码返回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(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