note 41534 added to language.operators.comparison
| From: | webmaster__AT__digitalanime__DOT__nl at rn2 dot php dot net | Date: | Tue, 13 Apr 2004 19:31:15 +0000 |
| Subject: | note 41534 added to language.operators.comparison | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-68091@lists.php.net to get a copy of this message | ||
WARNING!!!!
Let's say, we have this little script:
<?php
$username = 'Me';
$guestusername = 'Guest';
echo 'Hello, ' . isset($i) ? 'my friend: ' . $username . ', how are you
doing?' : 'my guest, ' . $guestusername . ', please register';
?>
What you want:
If $i is set, display:
Hello, my friend: Me, how are you doing?
If not, display:
Hello, my guest, Guest, please register
BUT, you DON'T get that result!
If $i is set, you get this:
my friend: Me, how are you doing? (so, there's not "Hello, " before it)
If $i is NOT set, you get this:
my friend: Me, how are you doing?
So... That's the same!
You can solve this by using the "(" and ")" to give priority to the ternary
operator:
<?php
$username = 'Me';
$guestusername = 'Guest';
echo 'Hello, ' . (isset($i) ? 'my friend: ' . $username . ', how are you
doing?' : 'my guest, ' . $guestusername . ', please register');
?>
When $i is set, you get this:
Hello, my friend: Me, how are you doing? (expected)
When $i is NOT set, you get this:
Hello, my guest, Guest, please register (expected too)
So.. Please, don't be dumb and ALWAYS use the priority-signs (or.. How do you call them?), (
and ).
By using them, you won't get unneeded trouble and always know for sure your code is doing what
you want: The right thing.
----
Manual Page -- http://www.php.net/manual/en/language.operators.comparison.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+41534
Delete -- http://master.php.net/manage/user-notes.php?action=delete+41534&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+41534&report=yes
Search -- http://master.php.net/manage/user-notes.php