Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.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 “为什么?”;10";==&引用;0xa";评估为真,但是;10";==&引用;012“;不';T_Php - Fatal编程技术网

Php “为什么?”;10";==&引用;0xa";评估为真,但是;10";==&引用;012“;不';T

Php “为什么?”;10";==&引用;0xa";评估为真,但是;10";==&引用;012“;不';T,php,Php,这些天我发现了这个奇怪的代码片段“10”==“0xa”,它的计算结果是真的。我在文档中找到的最好的内容是: 变量的类型由使用该变量的上下文决定 但我在代码片段中没有看到任何整数上下文。在四处打听时,人们似乎接受了这一点。我听到的一种解释是PHP将它们作为数字进行比较。因此,我对10的一些有效表达式进行了数字比较(使用PHP-5.6.5): 如果将数字与字符串进行比较,或者比较涉及数字字符串,则每个字符串都将转换为数字,并以数字进行比较 (我的重点) 编辑 数字sting是从函数返回布尔值tru

这些天我发现了这个奇怪的代码片段
“10”==“0xa”
,它的计算结果是真的。我在文档中找到的最好的内容是:

变量的类型由使用该变量的上下文决定

但我在代码片段中没有看到任何整数上下文。在四处打听时,人们似乎接受了这一点。我听到的一种解释是PHP将它们作为数字进行比较。因此,我对10的一些有效表达式进行了数字比较(使用PHP-5.6.5):

如果将数字与字符串进行比较,或者比较涉及数字字符串,则每个字符串都将转换为数字,并以数字进行比较

(我的重点)

编辑

数字sting是从函数返回布尔值
true

查找给定变量是否为数字。数字字符串由可选符号、任意位数、可选小数部分和可选指数部分组成。因此+0123.45e6是一个有效的数值。也允许使用十六进制(例如0xf4c3b00c)、二进制(例如0b10100111001)、八进制(例如0777)表示法,但仅限于无符号、十进制和指数部分

如果将数字与字符串进行比较,或者比较涉及数字字符串,则每个字符串都将转换为数字,并以数字进行比较

(我的重点)

编辑

数字sting是从函数返回布尔值
true

查找给定变量是否为数字。数字字符串由可选符号、任意位数、可选小数部分和可选指数部分组成。因此+0123.45e6是一个有效的数值。也允许使用十六进制(例如0xf4c3b00c)、二进制(例如0b10100111001)、八进制(例如0777)表示法,但仅限于无符号、十进制和指数部分


@马库斯马尔库什非常松散。例如,“10abcode”仍然是一个数字字符串,而“abcde10”则不是。@MarkusMalkusch在PHP的世界中,他们是这样做的。
“0b1010”
是十进制的二进制表示形式
10
“012”
是十进制的八进制表示法
10
对不起,我不太清楚。10的八进制表示是012。但是
“012”==“10”
的计算结果不是真的。二进制文件也是如此。如果你发现了一个bug。。。。。你要求提供文件参考,我已经提供了,这就是记录在案的行为。。。。如果您觉得这是错误的,那么要做的就是在@MarkusMalkusch上非常松散地抛出一个bug。例如,“10abcode”仍然是一个数字字符串,而“abcde10”则不是。@MarkusMalkusch在PHP的世界中,他们是这样做的。
“0b1010”
是十进制的二进制表示形式
10
“012”
是十进制的八进制表示法
10
对不起,我不太清楚。10的八进制表示是012。但是
“012”==“10”
的计算结果不是真的。二进制文件也是如此。如果你发现了一个bug。。。。。你要求提供文件参考,我已经提供了,这就是记录在案的行为。。。。如果你觉得这是错误的,那么要做的就是在
<?php
var_dump(
    0b1010, "10" == "0b1010", // false
    012,    "10" == "012",    // false
    0xa,    "10" == "0xa",    // true
    1E+1,   "10" == "1E+1",   // true
    1e1,    "10" == "1e1",    // true
    10.0,   "10" == "10.0",   // true
    +10,    "10" == "+10"     // true
);