RE: [PHP] conditional statement problems

From: Date: Tue, 01 Oct 2002 11:52:47 +0000
Subject: RE: [PHP] conditional statement problems
Groups: php.general 
Request: Send a blank email to php-general+get-118352@lists.php.net to get a copy of this message
> -----Original Message----- > From: Pablo Oliva [mailto:poliva@cox.net] > Sent: 01 October 2002 08:11 > To: php-general@lists.php.net > Subject: [PHP] conditional statement problems > > > $title_err = ($adTitle == "") ? 1 : strlen($adTitle) > 50 ? 2 : 0; > > Can anyone tell me why this is not evaluating correctly (returning a > value of 1) when $adTitle is an empty string? Yes. According to the list at http://uk.php.net/manual/en/language.operators.php, the ?: operator is left-associative, and of lesser precedence than >, so your expression is equivalent to the following: (($adTitle == "") ? 1 : strlen($adTitle) > 50) ? 2 : 0 ... and you can probably see why that is giving the wrong answer! You need to use parentheses to force the order of evaluation you want, thus: ($adTitle == "") ? 1 : (strlen($adTitle) > 50 ? 2 : 0) (Incidentally, if you've programmed in c or derivatives, this will come as a surprise since in c ?: is right-associative and would give your desired result without the additional parentheses.) Cheers! Mike --------------------------------------------------------------------- Mike Ford, Electronic Information Services Adviser, Learning Support Services, Learning & Information Services, JG125, James Graham Building, Leeds Metropolitan University, Beckett Park, LEEDS, LS6 3QS, United Kingdom Email: m.ford@lmu.ac.uk Tel: +44 113 283 2600 extn 4730 Fax: +44 113 283 3211

« previous php.general (#118352) next »