'1.8' == 1.8 can return false

From: Date: Sat, 12 Apr 2008 01:01:04 +0000
Subject: '1.8' == 1.8 can return false
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-36980@lists.php.net to get a copy of this message
I'm thinking there must be a bug in the heart of php causing this. I'll debug it, but I haven't looked at php source code in a few years and would like a tip as to which files are involved in evaluating "==". Here is a fragment from my code and the output: ... print "<pre>\n"; var_dump($max); var_dump($nms); var_dump($nms == $max); $max = (float)$max; $nms = (string)$nms; var_dump($max); var_dump($nms); var_dump($nms == $max); $max = (string)$max; $nms = (float)$nms; var_dump($max); var_dump($nms); var_dump($nms == $max); print "</pre>\n"; ... string(3) "1.8" float(1.8) bool(false) float(1.8) string(3) "1.8" bool(true) string(3) "1.8" float(1.8) bool(true) I found this using php 5.2.3. I just upgraded to php 5.2.5 and am receiving the exact same result. Obviously, I can't reproduce it with a simple var_dump("1.8"==1.8). :( I guess something is getting corrupted, and I will add debug output until I find out what (or Murphy removes the problem by adding debug output; then I'm not sure what I'll do). Thanks for any tips on which files I should look at it. Thanks, Todd

« previous php.internals (#36980) next »