Пожалуйста, объясните этот синтаксис PHP
Я просмотрел функции в руководстве, но я все еще не понимаю этого. По словам человека, написавшего код, если пользователь введет "y", то функция (не показанная здесь) будет выполнена. Однако из-за !
мне кажется, что функция (не показанная здесь) будет выполняться, если пользователь введет что-то другое, кроме "y".
Пожалуйста, объясните (я относительный новичок, поэтому было бы полезно как можно больше подробностей). Спасибо
if(!strncasecmp(trim(fgets(STDIN)),'y',1))
2 answers
fgets(STDIN)
- считывает строку со стандартного ввода (в вашем случае с клавиатуры).
trim
- удаляет все пробелы, окружающие пользовательский ввод. Поэтому, если пользователь введет ' y'
или 'y '
, он будет преобразован в 'y'
strncasecmp
- Пользователь может ввести либо верхний регистр Y
, либо нижний регистр y
, эта функция помогает сравнивать без учета регистра. Также эта функция возвращает 0
, если сравнение прошло успешно, а затем вы используете оператор !
(не), который изменяет 0
на 1
так, чтобы if
тест прошел.
Вы могли бы переписать его следующим образом:
if(strncasecmp(trim(fgets(STDIN)),'y',1) == 0)
Функция strncasecmp возвращает 0, если между сравниваемыми строками нет разницы, следовательно, !
необходимо проверить, равны ли они.