前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用 goto 来防止 if 嵌套

利用 goto 来防止 if 嵌套

作者头像
折影轻梦
发布2021-08-11 10:23:08
6770
发布2021-08-11 10:23:08
举报
文章被收录于专栏:折影轻梦折影轻梦

利用 goto 来防止 if 嵌套

2018年11月24日 544 字 大概 2 分钟

流程控制中的 if 是比较简单的逻辑判断,但是在多条逻辑判断中很容易造成 if 嵌套,逻辑复杂度较高,让人感到十分混乱。

万恶的 if 嵌套

代码语言:javascript
复制
<?php
$a = array(
    'state' => '1',
    'notice' => '注册成功!',
);

if ($_GET['username'] != '') {
    if (strlen($_GET['username']) > 4 or !strlen($_GET['username']) < 11) {
        $name = array('root','admin','GETmaster','master','webmaster','mixcm','administrator','sb','shabi');
        if (!in_array($_GET['username'], $name)) {
            if (preg_match("/^[a-zA-Z\s]+$/", $_GET['username'])) {
                $a['state'] = '0';
                $a['notice'] = '用户名必须为英文!';
            }
        } else {
            $a['state'] = '0';
            $a['notice'] = '非法用户名!';
        }
    } else {
        $a['state'] = '0';
        $a['notice'] = '请输入大于4字符,且小于11个字符的用户名!';
    }

} else {
    $a['state'] = '0';
    $a['notice'] = '用户名不能为空!';
}

echo json_encode($a,JSON_UNESCAPED_UNICODE);

于是在实际操作中就会想方设法避免以上格式。便有了 goto 和 表数据。

  • 逻辑清晰
  • 后期修改容易
  • 但需要防止 goto 滥用,建议只定义一个,列如本例就只定义了 end

利用 goto 解决(以下代码中有使用到表数据)

代码语言:javascript
复制
<?php
$a = array(
    'state' => '1',
    'notice' => '注册成功!',
);

if ($_GET['username'] == '') {
    $a['state'] = '0';
    $a['notice'] = '用户名不能为空!';
    goto end;
}

if (strlen($_GET['username']) < 4 or strlen($_GET['username']) > 11) {
    $a['state'] = '0';
    $a['notice'] = '请输入大于4字符,且小于11个字符的用户名!';
    goto end;
}

$name = array('root','admin','GETmaster','master','webmaster','mixcm','administrator','sb','shabi');
if (in_array($_GET['username'], $name)) {
    $a['state'] = '0';
    $a['notice'] = '非法用户名!';
    goto end;
}

if (!preg_match("/^[a-zA-Z\s]+$/", $_GET['username'])) {
    $a['state'] = '0';
    $a['notice'] = '用户名必须为英文!';
    goto end;
}

end:
echo json_encode($a,JSON_UNESCAPED_UNICODE);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年11月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 利用 goto 来防止 if 嵌套
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档