Tell me how you can improve this code while preserving its logic.

<?php if (isset($_POST['submit'])){ if (!empty($_POST['color'])){ setcookie('color', $_POST['color']); $_COOKIE['color'] = $_POST['color']; } } $color = isset($_COOKIE['color']) ? $_COOKIE['color'] : 'red'; ?> <form method="post" action=""> <p> <select size="5" name="color"> <label>Выберите цвет:</label> <option value="red" <?php if ($_COOKIE['color']=='red') echo 'selected="selected"'?>>Красный</option> <option value="blue" <?php if ($_COOKIE['color']=='blue') echo 'selected="selected"'?>>Синий</option> <option value="yellow" <?php if ($_COOKIE['color']=='yellow') echo 'selected="selected"'?>>Жёлтый</option> <option value="brown" <?php if ($_COOKIE['color']=='brown') echo 'selected="selected"'?>>Коричневый</option> <option value="green" <?php if ($_COOKIE['color']=='green') echo 'selected="selected"'?>>Зелёный</option> </select> </p> <p><input type="submit" name="submit" value="Применить"></p> </form> <div> <font color="<?php echo $color?>"> "Lorem ipsum dolor sit amet, consectetur adipiscing elit.. </font> 

When selecting and submuting colors, this color is applied to the text and makes the option selected. But how can you make it more beautiful with blocks of option value ..?

    1 answer 1

    • Colors stored in an array.
    • Options are displayed through a loop.
    • If the key matches, then do selected

    this is an array in php

     $colors = [ 'red' => 'Красный', 'green' => 'Зеленый', 'blue' => 'Синий' ]; 

    this conclusion

     <select size="5" name="color"> <?php foreach ($colors as $k => $v): ?> <option value="<?= $k; ?>" <?php echo ($_COOKIE['color'] == $k) ? 'selected="selected"' : '' ?>><?= $v; ?></option> <?php endforeach; ?> </select> 
    • Got it .. yes .. thanks, Alexey. - Beginner