За последние 24 часа нас посетили 204805 программистов и 2232 робота. Сейчас ищут 1699 программистов ...

Подскажите что за зверь?

Тема в разделе "PHP для новичков", создана пользователем RomBik70rus, 1 июл 2017.

  1. RomBik70rus

    RomBik70rus Новичок

    С нами с:
    1 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Адрес:
    Россия, Томск
    Всем здравствуйте!
    Смотрю Lynda.com - MySQL/PHP with MySQL Essential Training (Kevin Skoglund), всё отлично, пока не дошел до:
    PHP:
    1. <?php
    2. // don`t reject 0 or 0.0
    3. $quantity = "";
    4. if (empty($quantity) && !is_numeric($quantity)) {
    5. echo "You must enter quantity.";
    6. }
    7. ?>
    никак не въеду. !is_numeric - это чего за зверь? И как правильно проверить, что $quantity не числовое значение. Он там проверяет таким способом, но это не работает. Что число поставь в переменную, что строку, одинаково. И про !is_numeric я нигде не нашел, судя по всему такого и в природе нет. Вот и вопрос, вроде хвалят Lynda.com, кто-то говорит что этот курс один из лучших. Я в растерянности, проясните пожалуйста где тут "собака зарыта"?
     
    #1 RomBik70rus, 1 июл 2017
    Последнее редактирование модератором: 1 июл 2017
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    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
     
    RomBik70rus нравится это.
  3. RomBik70rus

    RomBik70rus Новичок

    С нами с:
    1 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Адрес:
    Россия, Томск
    $quantity - это типа то что ввел пользователь. Так при пустой строке ("") или если переменная принимает не числовое значение, то должно выполниться echo, и я никак не могу понять почему при переменной типа string (не "0"), echo не работает. Вот я и написал, в $quantity что число засунь, что строку - результат один.
    Спасибо. Насчет </> когда понял, сообщение уже правке не поддавалось. Да и с названием темы я мягко говоря сел в лужу.
     
    #3 RomBik70rus, 1 июл 2017
    Последнее редактирование: 1 июл 2017
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    тут логика такая, если строка пустая И она не число (варианты для 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 выполнится
     
    RomBik70rus нравится это.
  5. RomBik70rus

    RomBik70rus Новичок

    С нами с:
    1 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Адрес:
    Россия, Томск
    Вкратце опишу что пытался донести Кэвин Скогланд:
    "Если введено не числовое значение, или ничего не введено, выведи пользователю: (Введите значение)".
    И я запутался, т.к. как показал он, при переменной типа string сообщение (Введите значение) выведено не будет. А вот если вместо && поставить || , то все вроде работает как он и задумывал. Выходит он ошибся? Вот это меня и повергло в ступор. Простите, наверное мои вопросы настолько наивны, но мне это интересно и сейчас полно свободного времени, чтобы заняться тем, чем никогда не занимался.
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Возможно
     
    RomBik70rus нравится это.
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    там OR должно быть стопудово
     
  8. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Все правильно там написано.

    https://php.ru/manual/function.empty.html

     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    блин, ты прав. там же камент даже есть, чтобы нули не откидывало.
     
  10. RomBik70rus

    RomBik70rus Новичок

    С нами с:
    1 июл 2017
    Сообщения:
    6
    Симпатии:
    0
    Адрес:
    Россия, Томск
    Спасибо всем, видать перегрелся я :) , может файлик не сохранял. Просто при строковой переменной мне ничего не выводилось. Мой косяк. Еще раз всем спасибо, а то всё вроде было понятно, а тут как "на грабли наступил". :( Хотя при нуле 0 или "0" все таки не так как задумано.
    В общем смысл в том что конкретно в этом уроке он пытался донести такой: спрашиваем у пользователя сколько у него детей, ну и понятно, что ноль тоже должен прокатывать как ответ.
    Ну я в начале пути, думаю далее найдутся ответы на многие вопросы. Видать Кевин наскоряк это объяснил, как наглядный пример, не вдаваясь во все тонкости.
     
    #10 RomBik70rus, 4 июл 2017
    Последнее редактирование: 4 июл 2017