335
submitted 1 year ago* (last edited 1 year ago) by AlmightySnoo@lemmy.world to c/programmerhumor@lemmy.ml
you are viewing a single comment's thread
view the rest of the comments
[-] dot20@lemmy.world 28 points 1 year ago

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"
[-] lightsecond@programming.dev 10 points 1 year ago

Halp. I don’t understand how it went from step 2 to step 3.

[-] sanguinet@lemmy.ca 29 points 1 year ago

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.

[-] lugal@lemmy.one 4 points 1 year ago

Thanks! I never worked with PHP but I understand your explanation. Making memes about languages is also about learning

load more comments (2 replies)
load more comments (2 replies)
load more comments (2 replies)
this post was submitted on 14 Jul 2023
335 points (91.0% liked)

Programmer Humor

32400 readers
253 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS