猿问

为什么范围( 0, 0 )的断言对于任何单元素数组都返回true,而不管其值如何?

这些都是预期的(根据https://php.net/manual/en/language.operators.array.php):


assert( range( 0, 0 ) == [0] );

assert( range( 0, 0 ) == ['0'] );

assert( range( 0, 0 ) !== ['not zero'] );

assert( range( 0, 1 ) != ['not zero', 'not zero'] );

但是为什么不管它的值如何,它range( 0, 0 )显然都被认为==等于任何单元素数组?


assert( range( 0, 0 ) == ['not zero'] ); // return TRUE??


慕森卡
浏览 209回答 1
1回答

动漫人物

更好的解释是==运算符将数组元素转换为int,因为运算符的左侧是带有 int 的数组。因为两者intval('not zero')和(int) 'not zero'将返回 0 比较将返回 true ,因为它是 0 (正如人们可以在这里看到的)。使用===PHP 时不进行类型转换,因此字符串保持字符串,因此比较失败(来自PHP 运算符):===: 如果 $a 和 $b 具有相同顺序和相同类型的相同键/值对,则为 TRUE 。
随时随地看视频慕课网APP
我要回答