1

奇怪的是下面的代码返回真!

 if ('1'==1 && '014'==016)
    echo 1;

输出是

  1

谁能告诉我为什么'014'等于016?以及如何解决这个问题?并且如果可以避免进行显式转换,因为数据类型一直都是变化的。

我正在使用 PHP 版本 5.3.8-ZS5.5.0

4

3 回答 3

3

在 PHP 中,使用带前导零的整数值会导致 PHP 假定它是八进制数。八进制 016 等于十进制 14。

在与另一个整数进行比较时,使用诸如'014'is 隐式转换为小数的字符串。14

http://php.net/manual/language.types.integer.php

于 2013-11-08T03:08:23.757 回答
0

试试这个。

<?php

if (ltrim((int)'1',0) == ltrim(1,0) && ltrim((int)'014',0)== ltrim('016', '0'))
     echo 1;
于 2013-11-08T05:19:08.033 回答
0

您需要先将字符串值转换为整数,如下所示:

        if(intval('1')==1 && intval('014')==16)
        echo 1;

intval()

于 2013-11-08T03:48:02.087 回答