Как сделать условие?
Из формы получаю данные
$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
Ответы (2 шт):
Начинайте с максимально строгого условия, т.е. проверяйте все три фото и дальше по убыванию, т.к. вы не можете проверить изначально $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 наиболее подходящий.
сложить ключи в массив и обработать
$keys = ['photo1', 'photo2', 'photo'];
foreach ($keys as $key) {
if (isset($_POST[$key]) {
echo $_POST[$key];
$$key = $_POST[$key]; // $photo1 = ...
}
}
Если вам уж прям нужны переменные $photo1, .. то $$key в помощь