Php 未执行switch语句case

Php 未执行switch语句case,php,Php,像这样,我有超过40个案例陈述一些条件甚至没有执行我不知道为什么请回答谢谢 switch (true){ case (isset($_POST['min_beds']) && !empty($_POST['price_val']) && isset($_POST['property_status']) && $_POST['property_type'] == 'All' && $_POST['my_project_loca

像这样,我有超过40个案例陈述一些条件甚至没有执行我不知道为什么请回答谢谢

switch (true){
    case (isset($_POST['min_beds']) && !empty($_POST['price_val']) && isset($_POST['property_status']) && $_POST['property_type'] == 'All' && $_POST['my_project_location'] == 'All'): 
    break;
    case (isset($_POST['min_beds']) && !empty($_POST['price_val']) && isset($_POST['my_project_location']) && $_POST['property_type'] == 'All' && $_POST['property_status'] == 'All'): 
    break;
    case (isset($_POST['min_beds']) && !empty($_POST['price_val']) && isset($_POST['property_status']) && $_POST['property_type'] == 'All' && $_POST['my_project_location'] == 'All'):
    break;

    case ($_POST['property_status'] == 'All' && isset($_POST['property_type']) && isset($_POST['my_project_location'])  && isset($_POST['min_beds']) && isset($features) && !empty($_POST['price_val'])): 
    break;
    case (isset($features) && !empty($_POST['price_val']) && isset($_POST['my_project_location']) && $_POST['property_status'] == 'All' && $_POST['property_type'] == 'All' && $_POST['min_beds'] == 'All'): 
    break;
    case ($_POST['property_status'] == 'All' && isset($_POST['my_project_location'])  && isset($_POST['min_beds']) && isset($features) && !empty($_POST['price_val']) && $_POST['property_type'] == 'All'): 
    break;
  }

开关的工作原理更像一系列的
elseif
,而不是一系列的
if
。只有计算结果为true的第一个
case
语句(与打开的值进行非严格比较时)将被视为匹配,并且不会检查进一步的
case
语句。在匹配的
案例
语句之后,一旦到达第一个
中断
,开关将退出

见:


您没有正确使用开关。如果您希望在满足这些条件时中断,请使用ifs

if(isset($_POST['min_beds']) && !empty($_POST['price_val']) && isset($_POST['property_status']) && $_POST['property_type'] == 'All' && $_POST['my_project_location'] == 'All'){
    break;
}
if(isset($_POST['min_beds']) && !empty($_POST['price_val']) && isset($_POST['my_project_location']) && $_POST['property_type'] == 'All' && $_POST['property_status'] == 'All'){ 
    break;
}
if(isset($_POST['min_beds']) && !empty($_POST['price_val']) && isset($_POST['property_status']) && $_POST['property_type'] == 'All' && $_POST['my_project_location'] == 'All'){
    break;
}
if($_POST['property_status'] == 'All' && isset($_POST['property_type']) && isset($_POST['my_project_location'])  && isset($_POST['min_beds']) && isset($features) && !empty($_POST['price_val'])){
    break;
}
if(isset($features) && !empty($_POST['price_val']) && isset($_POST['my_project_location']) && $_POST['property_status'] == 'All' && $_POST['property_type'] == 'All' && $_POST['min_beds'] == 'All'){ 
    break;
}
if($_POST['property_status'] == 'All' && isset($_POST['my_project_location'])  && isset($_POST['min_beds']) && isset($features) && !empty($_POST['price_val']) && $_POST['property_type'] == 'All'){ 
    break;
  }

switch语句不是这样工作的。这不是它的目的。使用
if
salready使用else如果它不能正常工作,我需要将一些条件移到代码顶部,然后执行。这里也是这样,switch语句不是这样工作的。ii只执行第一个条件,如果不在循环或开关语句等控制结构中,则true
break
不会执行任何操作。他的原始开关也不会执行任何操作。根据他最初的帖子,我假设他已经在一个他想退出的循环中。如果你看一下实际的代码,很明显这不会在任何类型的循环中。重复检查全局变量是否存在键的目的是什么?如果(!isset($features)&$$U POST['property\U status']='All'&$$U POST['min\U beds']=='All'&$$U POST['property\U type']='All'&$$U POST['property\U type']='All'&&$$U POST['my\U project\U location']='All'){$args=array('numberposts'=>-1,'post_type'=>'property','orderby'=>'title','order'=>'ASC',);}
if(isset($_POST['min_beds']) && !empty($_POST['price_val']) && isset($_POST['property_status']) && $_POST['property_type'] == 'All' && $_POST['my_project_location'] == 'All'){
    break;
}
if(isset($_POST['min_beds']) && !empty($_POST['price_val']) && isset($_POST['my_project_location']) && $_POST['property_type'] == 'All' && $_POST['property_status'] == 'All'){ 
    break;
}
if(isset($_POST['min_beds']) && !empty($_POST['price_val']) && isset($_POST['property_status']) && $_POST['property_type'] == 'All' && $_POST['my_project_location'] == 'All'){
    break;
}
if($_POST['property_status'] == 'All' && isset($_POST['property_type']) && isset($_POST['my_project_location'])  && isset($_POST['min_beds']) && isset($features) && !empty($_POST['price_val'])){
    break;
}
if(isset($features) && !empty($_POST['price_val']) && isset($_POST['my_project_location']) && $_POST['property_status'] == 'All' && $_POST['property_type'] == 'All' && $_POST['min_beds'] == 'All'){ 
    break;
}
if($_POST['property_status'] == 'All' && isset($_POST['my_project_location'])  && isset($_POST['min_beds']) && isset($features) && !empty($_POST['price_val']) && $_POST['property_type'] == 'All'){ 
    break;
  }