> -----Original Message-----
> From: Pablo Oliva [mailto:[EMAIL PROTECTED]]
> Sent: 01 October 2002 08:11
> To: [EMAIL PROTECTED]
> 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: [EMAIL PROTECTED]
Tel: +44 113 283 2600 extn 4730      Fax:  +44 113 283 3211 

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to