我在使用此输出进行推理时遇到了困难.
问题在于一个服务器,而不是另一个服务器,并且当只有一个值相同时,不知何故将值计算为多个"真值".
这是一个PHP版自动解释的东西,PHP试图用数字而不是字符串?
任何想法都会有所帮助 谢谢!
$SelectedID="20140115214529625";
$con=GetSQLConnection("SomeDataBaseSomewhere");
$sqlQ="SELECT * FROM StoryTable ORDER BY Name ASC";
$result = mysqli_query($con,$sqlQ);
while($row = mysqli_fetch_array($result)){
if($SelectedID==$row['newPermID']){
echo "Data: ".$SelectedID.", ".$row['newPermID']."\n";
}else{}
}
mysqli_close($con);
Output:
Data: 20140115214529625, 20140115214529623
Data: 20140115214529625, 20140115214529624
Data: 20140115214529625, 20140115214529625 < Should Be The Only True Value???
Data: 20140115214529625, 20140115214529626
Run Code Online (Sandbox Code Playgroud)
`
这是一个太酷的PHP,并在引擎盖下做了一些意想不到的魔术.
一旦它发现2个字符串看起来像数字 - 它将它们转换为数字并在之后进行比较(并且你可能运行32位php,它只是溢出了如此大的整数).
例:
var_dump('01' == '1'); // true
Run Code Online (Sandbox Code Playgroud)
为避免它使用===
比较,这将阻止它这样做.