在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;
}
}
不需要,首先,foreach和for是差不多的,只不过foreach专门针对对象和数组的循环,对于for循环用的地方可能更多。
那么,根据以上的原理可知:
foreach就是一个普通的循环;
对于循环语句,用
return
还是break
都具有终止循环的作用。但是:
return终止循环的同时同时会终止return所在的方法或者函数的执行,而break只是终止了当前整个for循环的执行,当前方法或者函数还是会继续执行的。
就是这么个区别。
而在你这程序里面来看,在for循环里面,break后的return是没有用的,因为break就直接跳出循环了,下面的程序不执行,也就是根本到不了return。那么反过来看先写return在写break,是同样的道理。
但是这两个带来的区别就是我上面说的,假设你foreach接下来还要执行些什么程序,你在for中用了return,那么foreach后面的程序就不执行了,而你用了break,foreach执行后继续可以执行自己想要执行的逻辑。
所以,依照此种逻辑,你可以干很多事情了。