繁体   English   中英

PHP的高级搜索功能

[英]Advanced Search Function with PHP

目前,我有一个表格,允许用户填写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语句来检查填充了哪些字段,并根据输入的字段正确设置条件?

谢谢大家对高级的帮助! 非常感激! :)

更改为以下代码将起作用。 问题是当您使用ELSE时,您会将条件语句限制为仅一个结果。

(可选)如果发现IF不干净,则可以使用switch / case语句。

但是它可能会产生重复,因此您需要解决这个问题。 (我不知道您的代码,这只是一个假设)

$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.
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM