我在搜索表单中有三个下拉列表。如果只选择了一个下拉选项,我想显示结果。现在,搜索仅适用于第一个下拉框选择(在示例中,它是$ StockType)。如果我在第二个或第三个下拉列表中仅选择一个选项,则不会显示任何结果。这是我的开关声明:
$StockType = $_GET['StockType'];
$make = $_GET['Make'];
$model = $_GET['Model'];
switch (true) {
case ($StockType):
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'vehicle',
'paged' => $paged,
'posts_per_page' => 15,
'meta_key' => 'StockType',
'meta_value' => $StockType
);
break;
case ($make):
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'vehicle',
'paged' => $paged,
'posts_per_page' => 15,
'meta_key' => 'Make',
'meta_value' => $Make
);
break;
case ($model):
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'vehicle',
'paged' => $paged,
'posts_per_page' => 15,
'meta_key' => 'Model',
'meta_value' => $model
);
break;
}
答案 0 :(得分:2)
你永远不应该将switch与true一起使用,这意味着唯一适用的案例是第一个评估为true或没有值的案例!
你想要做的是:
switch($value){
case 'value 1':
doSomething();
break;
case 'value 2':
doSomething();
break;
case 'value 3':
doSomething();
break;
}
查看有关PHP中类型杂耍的文章,以更深入的方式理解您的问题:http://www.php.net/manual/en/language.types.type-juggling.php
答案 1 :(得分:0)
是即使您重新安排案例顺序,它总是运行第一种情况,然后它也将运行第一种情况,因为您的开关案例编码不正确。 对于前者如果用户选择第三个下拉菜单,则在 $ model 中设置一个值,将其他变量设置为 NULL 值,但在您的编码情况下,它始终显示为第一个案例为 $ stocktype 设置为null但它也满足条件。根据我的观点,你必须尝试:
if($_GET['stocktype']!=''){
$yourvalue=$_GET['stocktype'];
}
elseif($_GET['model']!=''){
$yourvalue=$_GET['model'];
}
elseif($_GET['make']!=''){
$yourvalue=$_GET['make'];
}
switch($yourvalue){
case 'stocktype':
//your code
break;
case 'make':
//your code
break;
case 'mode;':
//your code
break;
default:
}
答案 2 :(得分:-1)
如果使用正确,切换为true将起作用。试试这个:
switch (true) {
case ( !empty($_GET['StockType']) ):
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'vehicle',
'paged' => $paged,
'posts_per_page' => 15,
'meta_key' => 'StockType',
'meta_value' => $StockType
);
break;
case ( !empty($_GET['Make']) ):
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'vehicle',
'paged' => $paged,
'posts_per_page' => 15,
'meta_key' => 'Make',
'meta_value' => $make
);
break;
case ( !empty($_GET['Model']) ):
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'vehicle',
'paged' => $paged,
'posts_per_page' => 15,
'meta_key' => 'Model',
'meta_value' => $model
);
break;
}