Почему не срабатывает условие или ?

grebovich

Гуру форума
Регистрация
19 Мар 2012
Сообщения
362
Реакции
81
Всем доброго времени суток!
Парни помогите плиз решить головоломку, и сильно не пинайте я в php даже не чайник а так стаканчик:):)

И так есть некая конструкция которая проверяет по условию значению слова Цвет и если такое слово встречается добавляет стили, если же нет такого слова соответственно стили не добавляются сам код ниже:

Код:
                                <?php if (strstr($option['name'], 'Цвет')) { ?>
                                <style>
                                .product-info .radio input[type='radio'] + .label-in-img {padding: 2px;}
                                .product-info .radio .img-thumbnail {margin: 0; width: 30px;}
                                .product-info .radio input[type='radio']:checked + .label-in-img .fa {color: #fff; left: 21px; right: inherit; bottom: 3px;}
                                </style>
                                <?php } ?>

Вот и он работает отлично, но у меня стоит задача чтоб проверка шла по двум словам, а именно по уже имеющему слову Цвет и плюс слово Колір то есть нужно чтоб если встречается одно или другое слово (Цвет или Колір) то чтоб функция срабатывала и добавляла стили.

Я написал такую вот проверку:
Код:
<?php if (strstr($option['name'], 'Цвет' || $option['name'], 'Колір')) { ?>

Вроде все верно, но работать не хочет, подскажите плизззз что не так я делаю?
Заранее спасибо!
 
<?php if (strstr($option['name'], 'Цвет') || strstr($option['name'], 'Колір')) { ?>
 
Не люблю все эти стринг-позишины и тд
Я бы расширил таблицу с опциями и дал им кодовые поля на латинице
И было бы все проще - <?php if ($option['code']=='color') { ?>
А в name любой перевод пихайте: Цвет, Колір, Color, Farbe, Kolor, రంగు
 
<?php if (strstr($option['name'], 'Цвет') || strstr($option['name'], 'Колір')) { ?>
К сожалению данный метод у меня тоже не заводится, перестает работать любое из условий.
Это Opencart 2.3 Может он что то чудит?! Так как всю ночь методом тыка подбирал различные вариации и ни в какую....
 
Не люблю все эти стринг-позишины и тд
Я бы расширил таблицу с опциями и дал им кодовые поля на латинице
И было бы все проще - <?php if ($option['code']=='color') { ?>
А в name любой перевод пихайте: Цвет, Колір, Color, Farbe, Kolor, రంగు
Во это интересно , но к сожалению я еще не на столько силен в этом, так одну две строчки методом тыка перебрать да, а то что вы советуете пока для меня дремучий лес....:facepalm:
 
PHP:
<?php

if (mb_stripos($color, 'цвет 1') !== false or mb_stripos($color, 'цвет 2') !== false)
{
    // что-то
}

Возможно регистр не тот или цвет вначале строки, тогда функция возвращает его позицию (0), а 0 воспринимается как false.

Используйте mb_stripos и проверяйте на false именно. Слова для проверки в нижнем регистре

Либо просто замените вашу функцию на stristr. Она не учитывает регистр. Но strpos работает быстрее.

А если у вас строки не на латинице, то желательно использовать функции с префиксом mb_
 
Последнее редактирование:
Все сдаюсь, сил моих уже нету.
Всю ночь просидел над этим вопросом глаза уже на лбу, видать моих знаний даже с вашими советами не совсем достаточно, отложу ка я эту затею до лучших времен....
Всем спасибо за помощь.
 
Назад
Сверху