При написании этого вопроса я обнаружил, что PHP НЕ использует строгое равенство для проверки вариантов переключения (в отличие от других языков сценариев, таких как JavaScript ).
Следовательно, case '0'
выполняется, если '0' == '-0'
, и, поскольку это правда, запускает его вместо этого (поскольку сначала проверяется для этого случая).
Если case '-0'
был помещен первым, он проверяет его первым, поэтому выполняет этот случай, и, поскольку оба случая действительны / TRUE
, , он запускает первый случай в операторе switch .