>像这样我有 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;
}
Switch 更像是一连串的elseif
,而不是一系列的if
。只有计算结果为 true 的第一个case
语句(当与正在打开的值进行非严格比较时(将被视为匹配项,并且不会检查进一步的case
语句。一旦在匹配的case
语句之后到达第一个break
,交换机将退出;
参见:https://www.php.net/manual/en/control-structures.switch.php
switch(true) {
case true:
echo("this will run");
case false:
echo("this will also run because there is no 'break' yet");
break;
case true:
echo("this will never run");
}
您没有正确使用开关。如果您想要在满足任何这些条件时中断,请使用 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;
}