ФорумПрограммированиеPHP для идиотов → smarty и "не равно" глюк

smarty и "не равно" глюк

  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz 8 июня 2011 г. 5:36

    здарова.

    осваиваю smarty.
    и вот столкнулся с проблемой

    мне нужно чтоб при определенных ноерах не отображался обин блок
    я делаю
    { if ($product.product_id != 11) || ($product.product_id != 22) || ($product.product_id != 21) || ($product.product_id != 12) || ($product.product_id != 3123) || ($product.product_id != 333)}  
    some trxt
    {/if}


    и не работает..

    но вот если я все поменяю на равно, то все работает!

    что это за глюк?
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 8 июня 2011 г. 5:41, спустя 5 минут 39 секунд

    !($a && $b) == !$a || !$b
    !($a || $b) == !$a && !$b
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 8 июня 2011 г. 5:56, спустя 14 минут 51 секунду

    что значит "не работает"? результат вычисления сабжевого условия всегда будет истинным, при любом $product.product_id
    Спустя 71 сек.
    сука, математику прогуливал небось?
    не всё полезно, что в swap полезло
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz 8 июня 2011 г. 6:08, спустя 12 минут


    Да суть не в этом. Он не понимает что меняя != на == он на самом деле не меняет условие на противоположное. Мне так кажется …


    так… разница между != и == я знаю

    я имел ввиду, что если я вместо != поставлю == , то глюка не наблюдается.
    то есть мне будет выводиться блок только с теми что я указал номерами.
    но у меня вопрос: почему не делается противоположное, когда я ставлю != ???

    то есть если productid не равен тем номерам, то должен выводиться блок
    а у меня он выводиться всегда
    НО если я ставлю, что productid равер тем номерам, то он выводится только там, где я указал эти номера!

    вот и вопрос: че за фигня? почему != не выполняется?
    Спустя 53 сек.

    что значит "не работает"? результат вычисления сабжевого условия всегда будет истинным, при любом $product.product_id


    можно поподробнее??

    я не понял
    Спустя 167 сек.

    !($a && $b) == !$a || !$b
    !($a || $b) == !$a && !$b



    а как это применить к моему условию?
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 8 июня 2011 г. 6:08, спустя 13 секунд


    но у меня вопрос: почему не делается противоположное, когда я ставлю != ???
    Потому что ты кретин и не удосужился прочитать и осмыслить то, что я тебе написал первым же постом.
  • Kvs

    Сообщения: 420 Репутация: N Группа: Кто попало

    Spritz 8 июня 2011 г. 6:13, спустя 4 минуты 14 секунд

    используй ne eq так понятней. иф ручке не карандаш
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz 8 июня 2011 г. 6:15, спустя 2 минуты 6 секунд


    используй ne eq так понятней. иф ручке не карандаш


    я ставил вместо != ne , neq и все равно
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 8 июня 2011 г. 6:15, спустя 8 секунд

    можно поподробнее??

    для того чтобы
    ($product.product_id != 11) || ($product.product_id != 22) || ($product.product_id != 21) || ($product.product_id != 12) || ($product.product_id != 3123) || ($product.product_id != 333) == false

    должны выполняться сразу шесть условий:

    ($product.product_id != 11) == false
    ($product.product_id != 22) == false
    ($product.product_id != 21) == false
    ($product.product_id != 12) == false
    ($product.product_id != 3123) == false
    ($product.product_id != 333) == false

    или

    $product.product_id == 11
    $product.product_id == 22
    $product.product_id == 21
    $product.product_id == 12
    $product.product_id == 3123
    $product.product_id == 333
    не всё полезно, что в swap полезло
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz 8 июня 2011 г. 6:16, спустя 59 секунд


    Потому что ты кретин и не удосужился прочитать и осмыслить то, что я тебе написал первым же постом.


    КАК ЭТО ПРИМЕНИТЬ К МОЕМУ УСТЛОВИЮ?
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 8 июня 2011 г. 6:19, спустя 3 минуты 21 секунду


    КАК ЭТО ПРИМЕНИТЬ К МОЕМУ УСТЛОВИЮ?
    Не ори, последний раз пытаюсь объяснить: Если ты хочешь поменять ВСЕ длинное условие на противоположное, мало поменять "не равно" на "равно", надо еще помянять "или" на "и". Мастер тебе правильно сказал - математика за 7 класс школы.
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz 8 июня 2011 г. 6:20, спустя 25 секунд

    || ($product.product_id != 22


    я конеш не знаю как смарти работает, но логично же:

    если id не равен 1 или id не равен 2 или id не равен 3 , то "выводить блок"
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 8 июня 2011 г. 6:22, спустя 2 минуты 23 секунды

    $product.product_id == 11 - это $a
    $product.product_id != 11 - это !$a
    Спустя 61 сек.
    если id не равен 1 или id не равен 2 или id не равен 3

    такое забавное ебанько
    не всё полезно, что в swap полезло
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 8 июня 2011 г. 6:21, спустя 23 часа 59 минут 19 секунд


    я конеш не знаю как смарти работает, но логично же:
    Смарти вообще не причем. Это математика, она хоть смарти хоть не смарти - везде одинаковая …
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz 8 июня 2011 г. 6:24, спустя 2 минуты 24 секунды



    КАК ЭТО ПРИМЕНИТЬ К МОЕМУ УСТЛОВИЮ?
    Не ори, последний раз пытаюсь объяснить: Если ты хочешь поменять ВСЕ длинное условие на противоположное, мало поменять "не равно" на "равно", надо еще помянять "или" на "и". Мастер тебе правильно сказал - математика за 7 класс школы.


    я не ору.

    мне не нужно меня на противоположное условие!!!
    я то хочу понять почему не работает эта конструкция
    { if ($product.product_id != 11) || ($product.product_id != 22) || ($product.product_id != 21) || ($product.product_id != 12) || ($product.product_id != 3123) || ($product.product_id != 333)}  
    some trxt
    {/if}


    ведь если логично посмотреть, то если id не равен 1 или id не равен 2 или id не равен 3 , то "выводить блок"

    но БЛОК ВЫВОДИТСЯ ВСЕГДА

    ——–
    но я решил проэкперементировать.. и поменял условие на равно
    и это условие работает
  • Sinkler

    Сообщения: 8083 Репутация: N Группа: в ухо

    Spritz 8 июня 2011 г. 6:25, спустя 1 минуту 6 секунд

    БЛОК ВЫВОДИТСЯ ВСЕГДА

    это карма

Пожалуйста, авторизуйтесь, чтобы написать комментарий!