Wpis z mikrobloga

@massejferguson: var zawsze jest true. Jesli true to ustaw mu wartość 1. Jeden to true nadal więc ustawia 2 bo gdyby było false to ustawiłby 3.
Jakiś czas temu już miałeś coś podobnego i tłumaczyliśmy ci jak w PHP działa porównywanie w przypadku braku silnego typowania.
  • Odpowiedz
@massejferguson: Zacznijmy od tego że od wersji PHP8 taki zapis jest błędny i wyrzuca Fatal Error (W PHP7 rzucał E_DEPRECATED).

Natomiast co do samego przykładu to jest podchwytliwy przez brak nawiasów. W PHP ewaluacja następuje od lewej do prawej, więc:

Pierwszy warunek true ? '1' : ... jest prawdziwy, więc ewaluuje się do wartości '1'. Jednak ze względu na sposób łączenia operatorów trójargumentowych PHP kontynuuje ewaluację następnego operatora trójargumentowego, traktując wartość
  • Odpowiedz