focuspro
@focuspro

Как добавить проверку дополнительного значения из базы в конструкцию if?

Сейчас у меня работает такая конструкция которая выводит цвет яблока в зависимости от того какой цвет записан в базе

<?php if ($apple->color == 'Красное'): ?>
                  (Красное)
                <?php elseif ($apple->color == 'Зеленое'): ?>
                    (Зеленое)
                      <?php else: ?>
                        <?php endif; ?>


Теперь у меня добавилось еще 2 значения в базе Красноватое и Зеленоватое

<?php if ($apple->color == 'Красное' or 'Красноватое'): ?>
                  (Красное)
                <?php elseif ($apple->color == 'Зеленое' or 'Зеленоватое'): ?>
                    (Зеленое)
                      <?php else: ?>
                        <?php endif; ?>


При такой конструкции даже если в базе записано 'Зеленоватое' выводится (Красное)
  • Вопрос задан
  • 35 просмотров
Решения вопроса 1
@rPman
неправильно используешь or так как php считает что ты сделал такое (цвет = красный) или (красноватое это истина), любое значение не 0 и не пусто это true поэтому Красное срабатывает

правильно - if(in_array($apple->color,['Красное','Красноватое'])...

еще более правильно, если html отличается только цветами или именами классов, то завести массив и подставлять только изменяющиеся значения в шаблон типа так:

где то определяешь в константах:
$colors=['Красное'=>'#FF0000','Красноватое'=>'#FF0000',...];

а в коде подстановки цвета будет что то такое:
<?php=make_color_html($colors[$apple->color]??UNKNOWN_COLOR); ?>

либо сразу html шаблон
<text style="color:<?php = $colors[$apple->color]??UNKNOWN_COLOR; ?>">
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dsmoke
<?php if ($apple->color == 'Красное' || $apple->color ==  'Красноватое'): ?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы