Всем здравствуйте! Смотрю Lynda.com - MySQL/PHP with MySQL Essential Training (Kevin Skoglund), всё отлично, пока не дошел до: PHP: <?php // don`t reject 0 or 0.0 $quantity = ""; if (empty($quantity) && !is_numeric($quantity)) { echo "You must enter quantity."; } ?> никак не въеду. !is_numeric - это чего за зверь? И как правильно проверить, что $quantity не числовое значение. Он там проверяет таким способом, но это не работает. Что число поставь в переменную, что строку, одинаково. И про !is_numeric я нигде не нашел, судя по всему такого и в природе нет. Вот и вопрос, вроде хвалят Lynda.com, кто-то говорит что этот курс один из лучших. Я в растерянности, проясните пожалуйста где тут "собака зарыта"?
https://secure.php.net/manual/ru/function.is-numeric.php Если нужно проверить строку и чтобы она не состояла из целых чисел в диапазоне от PHP_INT_MIN до PHP_INT_MAX https://secure.php.net/manual/ru/reserved.constants.php то !is_numeric подходит. Что конкретно нужно проверить? На какое условие переменную? Ещё учитывай что empty если примет 0 то вернёт true https://secure.php.net/manual/ru/function.empty.php#refsect1-function.empty-returnvalues
$quantity - это типа то что ввел пользователь. Так при пустой строке ("") или если переменная принимает не числовое значение, то должно выполниться echo, и я никак не могу понять почему при переменной типа string (не "0"), echo не работает. Вот я и написал, в $quantity что число засунь, что строку - результат один. Спасибо. Насчет </> когда понял, сообщение уже правке не поддавалось. Да и с названием темы я мягко говоря сел в лужу.
тут логика такая, если строка пустая И она не число (варианты для empty: "", 0, false, null ) https://secure.php.net/manual/ru/function.empty.php#refsect1-function.empty-returnvalues то if выполниться, будет 1 && 1 = 1 (true), 0 && 1 = 0, 0 && 0 = 0 знак ! инвертирует, если было !0 = 1, !1 = 0 когда $quantity = "test" то будет 0 && !0 (1) = 0 - if не выполнится когда $quantity = "" то будет 1 && !0 (1) = 1 - if выполнится
Вкратце опишу что пытался донести Кэвин Скогланд: "Если введено не числовое значение, или ничего не введено, выведи пользователю: (Введите значение)". И я запутался, т.к. как показал он, при переменной типа string сообщение (Введите значение) выведено не будет. А вот если вместо && поставить || , то все вроде работает как он и задумывал. Выходит он ошибся? Вот это меня и повергло в ступор. Простите, наверное мои вопросы настолько наивны, но мне это интересно и сейчас полно свободного времени, чтобы заняться тем, чем никогда не занимался.
Спасибо всем, видать перегрелся я , может файлик не сохранял. Просто при строковой переменной мне ничего не выводилось. Мой косяк. Еще раз всем спасибо, а то всё вроде было понятно, а тут как "на грабли наступил". Хотя при нуле 0 или "0" все таки не так как задумано. В общем смысл в том что конкретно в этом уроке он пытался донести такой: спрашиваем у пользователя сколько у него детей, ну и понятно, что ноль тоже должен прокатывать как ответ. Ну я в начале пути, думаю далее найдутся ответы на многие вопросы. Видать Кевин наскоряк это объяснил, как наглядный пример, не вдаваясь во все тонкости.