#php Jakim cudem odpowiedź '2' bo nie rozumiem, wiem co oznacza te '?:' Ale tego nie rozumiem. Przecież powinno być jeden skoro zmienną jest zainicjowana. No chyba że czegoś nie wiem...
@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.
@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ść
Teoretycznie każdy bąbel dyskwalifikuje oponę, ale nie mogę nie zapytać wykopowych ekspertów. Opony nie mają nawet miesiąca, ale #!$%@?łem się w dziurę tydzień temu. (╥﹏╥) Jeździć obserwować czy na śmietnik? #opony #pytanie #motoryzacja
Jakim cudem odpowiedź '2' bo nie rozumiem, wiem co oznacza te '?:' Ale tego nie rozumiem. Przecież powinno być jeden skoro zmienną jest zainicjowana. No chyba że czegoś nie wiem...
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.
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ść
ten syntax nie jest obsługiwany od 3 lat
Dziękuje za pomoc :*