Как сделать условие?

Рейтинг: -2Ответов: 2Опубликовано: 15.03.2023

Из формы получаю данные

$photo1 = $_POST['photo1'];
$photo2 = $_POST['photo2'];
$photo3 = $_POST['photo3'];

Заполнено бывает только

$photo1

или

$photo1 $photo2

или

$photo1 $photo2 $photo3

if($photo3)
    {
        echo $photo1;
    }

Если заполнено только $photo1 то вывести только $photo1

Если заполнено только $photo1 и $photo2 то вывести только $photo1 и $photo2

Если заполнено только $photo1 и $photo2 и $photo3 то вывести только $photo1 и $photo2 и $photo3

Ответы

▲ 1Принят

Начинайте с максимально строгого условия, т.е. проверяйте все три фото и дальше по убыванию, т.к. вы не можете проверить изначально $photo1 и не проверить остальные, ибо может возникнуть ситуация, когда вы вывели $photo1, но так же присутствуют $photo2 или $photo3.

if (!empty($photo1) && !empty($photo2) && !empty($photo3)) {
    // output of $photo1, $photo2, $photo3
} elseif (!empty($photo1) && !empty($photo2)) {
    // output of $photo1, $photo2
} elseif (!empty($photo1)) {
    // output of $photo1
} else {
    // no one photo was given
}

Ниже приведен код, его тоже интересно рассмотреть, т.к. такой вариант вам по приведенному условию не подходит, причина тому, что в результирующий массив с фото, могут попасть варианты [$photo2, $photo3] или же [$photo1, $photo3].

$output = array_filter(
    [
        $_POST['photo1'] ?? '',
        $_POST['photo2'] ?? '',
        $_POST['photo3'] ?? ''
    ],
    static function(mixed $photo) {
        return !empty($photo);
    }
);

Подводя итоги, в вашем случае, перебор с помощью управляющей конструкции if-elseif-else наиболее подходящий.

▲ -2

сложить ключи в массив и обработать

$keys = ['photo1', 'photo2', 'photo'];
foreach ($keys as $key) {  
    if (isset($_POST[$key]) {
        echo $_POST[$key];
        $$key = $_POST[$key];  // $photo1 = ...
    }
}

Если вам уж прям нужны переменные $photo1, .. то $$key в помощь