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

grebovich

Гуру форума
Регистрация
19 Мар 2012
Сообщения
353
Реакции
79
Всем доброго времени суток!
Парни помогите плиз решить головоломку, и сильно не пинайте я в 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'], 'Колір')) { ?>

Вроде все верно, но работать не хочет, подскажите плизззз что не так я делаю?
Заранее спасибо!
 

steelfeet

Создатель
Регистрация
3 Июн 2019
Сообщения
24
Реакции
14
<?php if (strstr($option['name'], 'Цвет') || strstr($option['name'], 'Колір')) { ?>
 

borodatych

Постоялец
Регистрация
24 Июн 2016
Сообщения
159
Реакции
104
Не люблю все эти стринг-позишины и тд
Я бы расширил таблицу с опциями и дал им кодовые поля на латинице
И было бы все проще - <?php if ($option['code']=='color') { ?>
А в name любой перевод пихайте: Цвет, Колір, Color, Farbe, Kolor, రంగు
 

grebovich

Гуру форума
Регистрация
19 Мар 2012
Сообщения
353
Реакции
79
<?php if (strstr($option['name'], 'Цвет') || strstr($option['name'], 'Колір')) { ?>
К сожалению данный метод у меня тоже не заводится, перестает работать любое из условий.
Это Opencart 2.3 Может он что то чудит?! Так как всю ночь методом тыка подбирал различные вариации и ни в какую....
 

grebovich

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

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.239
PHP:
<?php

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

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

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

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

А если у вас строки не на латинице, то желательно использовать функции с префиксом mb_
 
Последнее редактирование:

grebovich

Гуру форума
Регистрация
19 Мар 2012
Сообщения
353
Реакции
79
Все сдаюсь, сил моих уже нету.
Всю ночь просидел над этим вопросом глаза уже на лбу, видать моих знаний даже с вашими советами не совсем достаточно, отложу ка я эту затею до лучших времен....
Всем спасибо за помощь.
 
Сверху