是否有可能在PHP中的数组或对象中使用条件?

时间:2018-01-01 12:15:01

标签: php arrays

我有这样的条件:

if($_POST['title'])
{
     $query
        ->orWhere('title' , 'LIKE' , '%' . $_POST['title'] . '%');
}
elseif($_POST['description'])
{
     $query
        ->orWhere('description' , 'LIKE' , '%' . $_POST['description'] . '%');
}
elseif($_POST['tag'])
{
     $query
        ->orWhere('tag' , 'LIKE' , '%' . $_POST['tag'] . '%');
}
elseif($_POST['title'] && $_POST['tag'] )
{
     $query
        ->orWhere('title' , 'LIKE' , '%' . $_POST['title'] . '%')
        ->orWhere('tag' , 'LIKE' , '%' . $_POST['tag'] . '%');
}
.
.
.

我现在想在PHP中以较短的方式编写这段代码吗?

这是错的,但例如:

$query
 if($_POST['title'])  ->orWhere('title' , 'LIKE' , '%' . $_POST['title'] . '%');
 if($_POST['tag'])  ->orWhere('tag' , 'LIKE' , '%' . $_POST['tag'] . '%');
 if($_POST['description'])  ->orWhere('description' , 'LIKE' , '%' . $_POST['description'] . '%');

1 个答案:

答案 0 :(得分:1)

这不完全但是,您可以了解如何制作通用功能以进行检查

$params = ["title","description","tag"];
$query = orIfMatchAll($query,$params);

function orIfMatchAll($query,$params){
    foreach($params as $param){
        if(isset($_POST[$param]){
            $query->orWhere($param,'LIKE',"%".$_POST[$param]."%");
        }
    }
    return $query;
}