Edit report at http://bugs.php.net/bug.php?id=52919&edit=1
ID: 52919 Updated by: [email protected] Reported by: ghazanfar dot ahmed at magsnet dot net Summary: if does not work properly of strlen even if typecasted -Status: Open +Status: Bogus Type: Bug Package: Scripting Engine problem Operating System: Centos 5.5 PHP Version: Irrelevant Block user comment: N New Comment: Works for me; as Felipe says, there doesn't seem to be a way to reproduce this. The sample code prints "CHECK ELSE" on every install I have to hand, which is exactly what I'd expect, given strlen("700") is fairly obviously 3. I'd suggest double checking that all your values in your actual code are actually what you think they are and following up with a user support channel such as an appropriate mailing list, IRC, or Stack Overflow. Previous Comments: ------------------------------------------------------------------------ [2010-09-24 04:01:02] [email protected] Sorry, I didn't read the comment. Re-opened. ------------------------------------------------------------------------ [2010-09-24 03:36:23] [email protected] Expected behavior. 3 > 7 is false, hence the else block will be executed... ------------------------------------------------------------------------ [2010-09-23 23:54:27] [email protected] This makes no sense... No way to reproduce such thing. ------------------------------------------------------------------------ [2010-09-23 22:50:34] ghazanfar dot ahmed at magsnet dot net Sorry, it prints "CHECK IF" where it should print "CHECK ELSE" ------------------------------------------------------------------------ [2010-09-23 22:46:23] ghazanfar dot ahmed at magsnet dot net Description: ------------ IF does not produce correct result when strlen is used to calculate length of a string which is an integer Test script: --------------- //IF does not seem to evaluate properly $row['number'] = 700; //in my case if was value retrieved from mysql // force typecasting $number = (string)$row['number']; if(strlen(trim($number)) > 7) { print "CHECK IF"; } else { print "CHECK ELSE"; } //It will always print "CHECK ELSE" where strlen($number)=3 (computes correctly) // where 3 > 7 is false ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=52919&edit=1
