Это условное утверждение:
$comments = get_value_of_comments_as_string(); if( !$comments == "on" ){...}
Какова цель !
перед переменной $comments
особенно, поскольку $comments
содержит строку.
Изменить: это условное выражение не похоже на опечатку, поскольку исходный кодер имел 5 таких условных операторов. все как это.
! является логическим оператором отрицания (или нет), поэтому в основном он изменяет значения правды на значения false и false для true.
Я уверен, что намерения автора должны были быть
!($comments == "on") // if comments == "on" return false
но то, что он на самом деле говорит, это
(!$comments) == "on") // if not comments == "on" ... this test will only succeed if comments is null or an empty string.
Гораздо лучший способ выразить это
$comments != "on"
Такое поведение происходит потому, что! имеет более высокий приоритет тогда ==, поэтому он будет оценивать перед ==
.