Crazy lens

PHP do{}while(false)
昨天看项目代码, 其中有一行 do-while(false) 看到我就觉得没啥用吧...但是我想了下不太对,没必...
扫描右侧二维码阅读全文
14
2017/03

PHP do{}while(false)

昨天看项目代码, 其中有一行 do-while(false) 看到我就觉得没啥用吧...

但是我想了下不太对,没必要会写这么一行, 具体上官方查过
alt

do-while(false) 和 goto 作用类似 ...
但是goto 这个东西最不好不要乱用, 容易死循环..
下面是找到的比较形象的网络介绍.

举个例子:你去商店买裙子,进入商店后发现只有一条(假设哈)。你想要红色的连衣裙。有个Check函数,以商店的裙子作为参数,检查它是否符合你的要求。符合则付钱,然后离开,不符合直接离开。

那么正常情况的代码如下:

    function Check( item )
    {
            if( 是连衣裙 )
            {
                    if( 是红色 )
                    {
                            if( 合身 )
                                    {
                                            付钱
                                    }       
                 }
          }
          离开商店
    }

当条件不适合的时候,就要跳过付钱环节,但离开商店是必须得做的。是不是觉得这个if的嵌套太复杂呢?如果还不明显,你可以在条件中再加入价钱等其他更多的条件,这样,这个深层次的if嵌套就很不美观了。(换用否定条件也不能改变if的嵌套)

而如果使用do-while(false),则可去除这种嵌套。代码变成如下:

            function Check( item )
            {
                    do {
                            if( 不是连衣裙 ) break;
                            if( 不是红色 ) break;
                            if( 不合身 ) break;
                            付钱
                    } while(false);
                    离开商店
            }

这样,嵌套的if变成了并列的,代码变得简洁,不再需要老远的去寻找一个括号到底跟谁配对.do-while(false)轻松去掉了麻烦的多层嵌套,即使再多条件也不怕。

虽然以前也遇到了这类问题,却没想到这样的解决方法。妙哉,妙哉。不过此方法并不被广泛使用,用在代码里可能引起别人的误会。所以用还是不用,全凭大家自己斟酌。

参考地址 https://my.oschina.net/yueguanqun/blog/61631

最后修改:2017 年 03 月 14 日 12 : 59 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论