2016-07-30 18 views

Odpowiedz

20

Jest tak, ponieważ jest traktowany jako wartość ósemkowa ze względu na wiodącą 0.

Oto bardziej wyjaśnienie dogłębne:

  1. 011 dosłowny jest rozpoznawana jako ósemkowym wartość
  2. Jest wtedy konwertowane na wartości dziesiętnych, co równa się 9
  3. The rzeczywiste porównanie dzieje się, co wygląda następująco: 9 == 11 // false

Od wersji '011' == 11 wartość ta jest równa true, ponieważ gdy łańcuch jest porównywany z liczbą całkowitą, jest również przekształcany na wartość całkowitą. Co ciekawe, początkowe zero w łańcuchu jest ignorowane w procesie, a interpreter php traktuje wartość jako dziesiętną zamiast ósemkową!

+2

Bardzo ładne wyjaśnienie. –

+1

Wiedziałem o ósemkowej reprezentacji, gdy nie cytowałem, ale założyłem to samo dla cytowanych, co ciekawe! –

+0

To prawda! 'var_dump (011 == 9);' 'var_dump (011 === 9);' – Progrock

Powiązane problemy