为什么评价为真

tim*_*one 1 php

乳清的评价是真的吗?

<?php


$val2=0;

//outputs that is an error123
if($val2=='error123'){
   echo 'that is an error123<br />';
}else{
   echo 'that is not an error123<br />';
}  
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 13

您将字符串与整数进行比较.为了进行比较,首先将字符串转换为整数.当'error123'转换为整数时,它变为0.

echo intval("error123");
Run Code Online (Sandbox Code Playgroud)

结果:

0
Run Code Online (Sandbox Code Playgroud)

在PHP手册中有这种行为的解释.

如果将数字与字符串进行比较或比较涉及数字字符串,则每个字符串将转换为数字,并且数字执行比较.

有一个快速参考页面PHP类型比较表,显示各种比较的结果.请参阅表"与==的松散比较".关于这个问题的有趣部分0 == "php"是显示为TRUE.

还有一个关于类型杂耍的页面.一个用户评论该网页上给出了几乎完全一样的例子,因为这.

如果你不想使用类型杂耍===而不是==.

  • 真正.疯了. (3认同)