Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Пожалуйста, объясните этот синтаксис PHP

Автор вопроса: LeahcimОтветов: 2

Я посмотрел функции в руководстве, но я все еще не понимаю этого. По словам человека, написавшего код, если пользователь введет "y", функция (не показанная здесь) будет выполнена. Однако из-за ! мне кажется, что функция (здесь не показана) будет выполняться, если пользователь введет что-то отличное от "y".

Пожалуйста, объясните (я относительный новичок, поэтому было бы полезно как можно больше подробностей). Спасибо.

if(!strncasecmp(trim(fgets(STDIN)),'y',1))
  • Это в контексте приложения командной строки? Pekka 03.06.2011
  • да, скрипт создает инструмент оболочки Leahcim 03.06.2011

phpif-statementstring-comparison

Ответы

Ответ 1 · рейтинг 10 · codaddict

fgets(STDIN) - читает строку со стандартного ввода (клавиатура в вашем случае).

trim - удаляет все пробелы вокруг пользовательского ввода. Поэтому, если пользователь вводит ' y' или 'y ', он будет преобразован в 'y'.

strncasecmp - пользователь может ввести Y в верхнем регистре или y в нижнем регистре, эта функция поможет вам сравнить нечувствительный к регистру способ. Также эта функция возвращает 0, если сравнение прошло успешно, а затем вы используете ! (не оператор), который изменяет 0 на 1, так что тест if проходит.

Вы можете переписать это как:

if(strncasecmp(trim(fgets(STDIN)),'y',1) == 0)

Ответ 2 · рейтинг 4 · csl

Функция strncasecmp возвращает 0, если нет разницы em> между сравниваемыми строками, поэтому ! проверяет, равны ли они.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы