我使用的是Perch,这是一种php CMS。我在这里问这个问题,因为它看起来像一个普通的php问题。
基本上,我在搜索页面上使用过滤器:
perch_content_custom('Jobs', array(
'page'=>'/view-job.php',
'template'=>'_job_list.html',
'filter' => array(
array(
'filter'=>'job_subject',
'match'=>'eq',
'value'=> $_GET['subject']
),
array(
'filter'=>'job_term',
'match'=>'eq',
'value'=> $_GET['term']
),
)
));我只想过滤GET字符串是否有值,所以如果指定了job_subject,就应用过滤器,但我知道我不能使用if语句,并且我不确定在php中有没有替代方法?
发布于 2013-05-16 22:47:34
这样如何:
$filters = array();
if(!empty($_GET['subject'])) {
$filters[] = array(
'filter'=>'job_subject',
'match'=>'eq',
'value'=> $_GET['subject']
);
}
if(!empty($_GET['term'])) {
$filters[] = array(
'filter'=>'job_term',
'match'=>'eq',
'value'=> $_GET['term']
);
}
perch_content_custom('Jobs', array(
'page'=>'/view-job.php',
'template'=>'_job_list.html',
'filter' => $filters
));但我猜这不是一个好的方法,当有一个过滤器有很多条目时……如果CMS不支持一些更好的过滤条件,我猜它不是一个很好的解决方案……
发布于 2013-06-21 03:44:04
不用担心:如果value字段为空,则Perch将匹配所有值,就好像该过滤器不存在一样。
在这里,您可以很容易地使用“三元运算符”(?:)来代替IF语句。
作为示例,下面是如何避免返回所有内容的方法:
‘'value'=>(empty($_GET"s")?“未定义”:$_GET“%s”)
https://stackoverflow.com/questions/16590467
复制相似问题