业务中有用到switch,突然想到了php8的新特性中有match,就决定试一试,确实省了很多步骤,实例对比一下吧
2022-07-20 04:33:26 2025-02-11 06:41:09 PHP 405 views
if ( in_array($order->status,[4,5,9,10])){
switch($order->status){
case 4:
$msg = '当前订单已完成,订单不可取消!';
break;
case 5:
$msg = '取消订单已完成,不可重复取消!';
break;
case 9:
$msg = '商品返回途中,暂时不可取消!';
break;
case 10:
$msg = '订单商品已返还,订单不可取消!';
break;
default:
$msg = '订单状态异常,请刷新后再试!';
}
return response()->json(['status'=>'error', 'code'=>1,'msg'=>$msg]);
}
if (in_array($order->status,[4,5,9,10])){
$msg = match ($order->status) {
4 => '当前订单已完成,订单不可取消!',
5 => '取消订单已完成,不可重复取消!',
9 => '商品返回途中,暂时不可取消!',
10 => '订单商品已返还,订单不可取消!',
default => '订单状态异常,请刷新后再试!',
};
return response()->json(['status'=>'error', 'code'=>1,'msg'=>$msg]);
}
注意:该方法不使用in_array在定义数组外的选项会报错
if (in_array($status, [4, 5, 9, 10])) {
$data = [
4 => '当前订单已完成,订单不可取消!',
5 => '取消订单已完成,不可重复取消!',
9 => '商品返回途中,暂时不可取消!',
10 => '订单商品已返还,订单不可取消!'
];
$msg = array_get($data, $status, "订单状态异常,请刷新后再试!");
// 也有替换成 $msg = $data[$status] ?? "订单状态异常,请刷新后再试!";
// 部分业务(if条件不同或没有in_array判断时)上面替换可能存在为空报错 以下用Dcatadmin详情表单显示修改为例
/*
$show->field('sex')->as(function ($sex){
$array = [
0 => '女',
1 => '男'
];
$sex = isset($sex)?$array[$sex]:" '';
return $sex??"";
});
*/
return response()->json(['status' => 'error', 'code' => 1, 'msg' => $msg]);
}