> -----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