формы — функция расширенного поиска с переполнением стека

В настоящее время у меня есть форма, которая позволяет пользователям заполнить 3 поля ввода. 3 из них являются текстовыми полями (название, автор и ISBN), а 1 из них является опцией выбора (категории).

Я хотел бы, чтобы пользователи могли заполнять любое количество из 4 полей и возвращать соответствующие значения. Это означает, что если пользователи заполняют 2 поля ввода, в бэкэнде будет 2 условия для проверки. 3 ввода заполнены означает 3 условия.

То, что у меня есть на данный момент, таково (пример, а не сам код):

    if($title == $allMyArray["title"]){
array_push($returningResult, $allMyArray);
}else if($author == $allMyArray["author"]){
array_push($returningResult, $allMyArray);
}else if($ISBN == $allMyArray["ISBN"]){
array_push($returningResult, $allMyArray);
}else if($categoreis== $allMyArray["categories"]){
array_push($returningResult, $allMyArray);
}else{
echo "nothing";
}

Этот набор кода работает, когда я заполняю только одно конкретное поле. Например, если я укажу только ввод автора и оставлю остальные 3 параметра пустыми, мне будут возвращены нужные мне значения. Однако, если я попытаюсь заполнить сразу 2 или более полей, возвращаемое значение будет неправильным.

Так как еще можно придумать оператор if else, который проверит, какие поля заполнены, и правильно установит условия на основе введенных полей?

Спасибо всем за помощь в продвинутом! Очень признателен! 🙂

0

Решение

Смена кода ниже будет работать. Проблема в том, что когда вы используете ELSE, вы ограничиваете свои условные заявления только одним результатом.

При желании вы можете использовать оператор switch / case, если сочтете IF грязным.

Но это может привести к дублированию, поэтому вам нужно разобраться с этим. (я не знаю ваш код, это всего лишь предположение)

$atLeast1Result = false;
if($title == $allMyArray["title"]){
array_push($returningResult, $allMyArray);
$atLeast1Result = true;
}
if($author == $allMyArray["author"]){
array_push($returningResult, $allMyArray);
$atLeast1Result = true;
}
if($ISBN == $allMyArray["ISBN"]){
array_push($returningResult, $allMyArray);
$atLeast1Result = true;
}
if($categoreis== $allMyArray["categories"]){
array_push($returningResult, $allMyArray);
$atLeast1Result = true;
}
if(!$atLeast1Result ) {
echo "nothing";
} else {
$returningResult = array_unique($returningResult); // this might now work on all versions, as i dont know what this array is.
}
1

Другие решения

Других решений пока нет …