写法一
多个case: 一个break; 多条件进入一个 下层
优点:好写注释 最优解
switch ($data['notification_type']) {
case 4://购买了新的订阅 需要支付发放
$this->payOrder($update);
break;
case 3: //试用取消订单 发送更新
case 10: //已经暂停
case 12: //取消订阅
$this->updateOrder($update, $data['notification_type']);
break;
default: //如果查询的结束时间 大于 本地mysql的结束时间 则更新时间
if ($this->order_info['end_time'] < $query_info['expiryTimeMillis']) {
$this->updateOrder($update, $data['notification_type']);
}
}
switch的case用表达式不太友好, 这样所有case中的表达式它都会获取结果后再进行判断的
写法二
|| 短路 方式
type = 1 和 2 都可以 echo '1和2触发';
缺点 :不好写注释
function test(Request $request){
switch ($request->get('type')){
case 1 || 2:
echo '1和2触发';
break;
case 3 || 4:
echo '3盒4触发';
break;
default:
echo '默认';
}
}
写法三
判断表达式 返回true 和 false ; in_array 等等
function test(Request $request){
$array1 = [1,2];
$array2 = [3,4];
switch ($request->get('type')){
case in_array($request->get('type') , $array1):
echo '1和2触发';
break;
case in_array($request->get('type'),$array2):
echo '3盒4触发';
break;
default:
echo '默认';
}
}