За последние 24 часа нас посетили 31834 программиста и 1393 робота. Сейчас ищут 829 программистов ...

Оператор IF

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

  1. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Как можно сделать условие компактнее, например, что бы не писать:
    if($file=="txt"||$file=="zip")
    А проще, например:
    if($file==("txt"||"zip")
     
    prohodiltut нравится это.
  2. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Не, фигню придумал. Нет такого))
     
  3. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    Это не проще,это нарушение логики,в первом примере ты именно проверяешь действительно ли в $file лежит 'txt' или 'zip'.А во втором примере у тебя фактически получается $file == true, так как в скобках всегда будет true при таком условии:
    более наглядно можешь посмотреть:
    PHP:
    1. $file = 'ololo';
    2.     if($file==("txt"||"zip"))
    3.         echo 'TRUE';
    Код (Text):
    1. TRUE
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.814
    Симпатии:
    1.332
    Адрес:
    Лень
    if (in_array ( $file, [ 'txt', 'zip' ]) ) {
    echo 1;
    }
     
    Danil005 и mkramer нравится это.
  5. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а ещё можно сделать это ключами в массиве и проверять через isset()
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А еще можно не страдать херней.
     
    machetero и SamyRed нравится это.
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не, ну пока их два - то да. А если их 15, то самое время начинать. :D
     
    SamyRed нравится это.
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.814
    Симпатии:
    1.332
    Адрес:
    Лень
    15 раз isset ? а вы сударь понимаете толк в извращении :D
     
    SamyRed нравится это.
  9. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не. массив и isset вместо 15 раз переменную писать. Плюс массив удобно в конфиг запихивать или в функцию передавать параметром.
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.814
    Симпатии:
    1.332
    Адрес:
    Лень
    это компактно будет выглядеть ?
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  12. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    А пример можно? Тип
    =(isset('zip'||'rar') ? '1' : '0';
    Да?
    --- Добавлено ---
    Ну знаешь, когда условий у меня 63 писать в if повторяя одно и тоже, не разумно.
     
  13. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    ооооооооооооооо.... Да тут говорить не о чем..... @Danil005, что, так сложно книжечку/мануал прочитать на русском, прежде чем проекты делать?

    P.S. я за
    PHP:
    1. if (in_array ( $file, [ 'txt', 'zip' ]) ) { /* ..... */ }
     
    Danil005 нравится это.
  14. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    @mkramer, я изучаю по мере создания, так как ты ищешь то, что тебе нужно и запоминаешь.
    --- Добавлено ---
    Ну и забыл там скобку закрыть..
     
  15. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Не надо так. Есть мануал, в нём минимальный объём знаний языка, надо его прочитать. https://secure.php.net/manual/ru/langref.php.
    Если бы. Там бред сивой кобылы написан, а не скобку забыл закрыть. Нормальное решение тебе уже 3 раза предложено, в том числе мной, а ты не видишь.
     
    Danil005 нравится это.
  16. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    @mkramer, я видел и сделал, спасибо, просто ответил на твое сообщения, как говориться - методом тыка все. )
     
  17. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Когда у тебя надо 63 раза писать if, то, скорее всего у тебя где-то что-то пошло не так. Вероятно, еще на стадии проектирования.
     
    SamyRed нравится это.
  18. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Человек, пишущий выражение из первой цитаты, слыхом не слыхивал таких умных слов :)
     
    SamyRed нравится это.
  19. prohodiltut

    prohodiltut Активный пользователь

    С нами с:
    4 фев 2017
    Сообщения:
    21
    Симпатии:
    2
    как вариант добавляй расширения файлов через регулярные выражения. Всеж таки меньше букафф будет
    PHP:
    1. if($file == "*.blablabla" и так далее)
     
  20. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Регулярка - плохое решение. В 95% случаев регулярка - плохое решение. В данном же случае оно вообще неприемлемое. И да, то, что вы написали, не регулярка.
     
    acho нравится это.
  21. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    "Если, избавляясь от костыля, вы использовали регулярку - знайте, теперь у вас два костыля"
     
  22. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я на регулярках построил свой двиг :D
     
  23. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @igordata, я походу как-то мимо смотрел, что регулярок не запомнил оО
     
  24. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    https://github.com/pinpie/pinpie/blob/stable/src/PP.php#L162 :D

    раньше было много регулярок. Но хитрым образом я свёл все регулярки в одну хорошую. Теперь осталась одна, которая парсит все типы тегов.
     
    acho нравится это.
  25. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.814
    Симпатии:
    1.332
    Адрес:
    Лень
    220 и 221 строки прикольны, а empty не пошло ?