this post was submitted on 14 Jul 2023
349 points (91.4% liked)
Programmer Humor
31793 readers
249 users here now
Post funny things about programming here! (Or just rant about your favourite programming language.)
Rules:
- Posts must be relevant to programming, programmers, or computer science.
- No NSFW content.
- Jokes must be in good taste. No hate speech, bigotry, etc.
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Ah, I understand now. The expression is evaluated like this:
$a == 1 ? "one" : $a == 2 ? "two" : $a == 3 ? "three" : "other"
$a == 2 ? "two" : $a == 3 ? "three" : "other"
"two" ? "three" : "other"
"three"
Halp. I don’t understand how it went from step 2 to step 3.
It's cause PHP associates the if-then-else pair only with its immediate "else" option, not with the entirety of the line.
Let's go by parts.
$a == 1 ? "one" : $a == 2 ? "two" : $a == 3 ? "three" : "other"
Is $a equal to 1? If so, we're "set" to the value on the left, which is
"one"
, if not then we're set to the value on the right, which is$a == 2
. $a is not equal to 1, so we're set to the right value,$a == 2
.This replaces the relevant part,
$a == 1 ? "one" : $a == 2
, with$a == 2
. So we're left with:$a == 2 ? "two" : $a == 3 ? "three" : "other"
Next, is $a equal to 2? If so, we're set to
"two"
, if not we're set to$a == 3
. The comparison is true, so we're set to the value on the left,"two"
. The relevant part here is$a == 2 ? "two" : $a == 3
only, so it replaces it with"two"
cause again, PHP is only associating with its immediate pair. So now we're left with:"two" ? "three" : "other"
Finally, is
"two"
truthy? If so, we're set to"three"
, if not we're set to"other"
. Since"two"
is truthy we're then left with"three"
.It's super confusing for sure.
Thanks! I never worked with PHP but I understand your explanation. Making memes about languages is also about learning
Thank you for the great explanation, and for teaching me the word "truthy."
Thank you!