switch语句

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]);
        }

match语句

 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]);
}