为了账号安全,请及时绑定邮箱和手机立即绑定

在PHP中foreach 语句可以同时用return 和 break么?

在PHP中foreach 语句可以同时用return 和 break么?

PHP
HUWWW 2019-03-13 21:06:11
在PHP中foreach 语句可以同时用return 和 break么? 例如:$arr = array( '1' => array('name' => 'zhangsan','age' => 20,'sex' => 1), '2' => array('name' => 'lisi','age' => 30,'sex' => 0), '3' => array('name' => 'wangwu','age' => 25,'sex' => 0), '4' => array('name' => 'liuliu','age' => 40,'sex' => 1) );shuffle($arr); //我想随机返回一女人的姓名和年龄(男:sex->1;女:sex->0)foreach ($arr as $key => $value) { if($value['sex'] == 1){ //此处return回数据 result[ 'name' => $value['name'], 'age' => $value['age'] ]; //如果我想在返回数据之后立即让循环终止还需要break吗? break; } }
查看完整描述

4 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

不需要,首先,foreach和for是差不多的,只不过foreach专门针对对象和数组的循环,对于for循环用的地方可能更多。
那么,根据以上的原理可知:

foreach就是一个普通的循环;

对于循环语句,用return还是break都具有终止循环的作用。

但是:

return终止循环的同时同时会终止return所在的方法或者函数的执行,而break只是终止了当前整个for循环的执行,当前方法或者函数还是会继续执行的。

就是这么个区别。

而在你这程序里面来看,在for循环里面,break后的return是没有用的,因为break就直接跳出循环了,下面的程序不执行,也就是根本到不了return。那么反过来看先写return在写break,是同样的道理。

但是这两个带来的区别就是我上面说的,假设你foreach接下来还要执行些什么程序,你在for中用了return,那么foreach后面的程序就不执行了,而你用了break,foreach执行后继续可以执行自己想要执行的逻辑。

所以,依照此种逻辑,你可以干很多事情了。

查看完整回答
反对 回复 2019-03-18
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

其实循环里面使用return是一种很不好的编码习惯,可读性和可维护性太差!建议在循环外层定义一个是否需要终止程序执行的标识变量,当需要返回的时候,赋值变量,并break,然后在循环外层,判断标识,确定是需要return还是继续执行!
另外讲一个开发中踩过的坑,就是在事务里面刚好有一个foreach,就有人在foreach里面直接return,由于代码跑在cli模式下,数据库由于事务没有解锁,直接锁死了。
其实只要稍微规范一下代码,这个坑都是不用踩的!

查看完整回答
反对 回复 2019-03-18
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

不需要 你return 之后 整个 foreach 就停止 执行了

查看完整回答
反对 回复 2019-03-18
?
撒科打诨

TA贡献1934条经验 获得超2个赞

可以是都可以。只是
return的话,整个函数就停止继续执行了,返回了
break只是跳出循环

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 509 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信