我想知道在使用“return”时是否需要在“switch”功能中使用“break”。
function test($string)
{
switch($string)
{
case 'test1':
return 'Test 1: ' . $string;
case 'test2':
return 'Test 2: ' . $string;
}
}
我已经尝试过了,没有“休息”就行了。但我需要知道这是否安全。谢谢。
答案 0 :(得分:100)
是的,您可以使用return
代替break
...
break
是可选的,用于防止“掉落”通过所有其他case
语句。因此return
可以以类似的方式使用,因为return
结束了函数执行。
此外,如果您的所有case
语句都是这样的话:
case 'foo':
$result = find_result(...);
break;
在您switch
return $result
语句之后,return find_result(...);
使用case
将使您的代码更具可读性。
最后,不要忘记添加default
案例。如果您认为您的代码永远不会达到default
的情况,那么您可以使用assert
函数,因为您永远无法确定。
答案 1 :(得分:11)
您不需要休息,返回会停止执行该功能。
(供参考:http://php.net/manual/en/function.return.php说:
如果在函数内调用,则return()语句会立即结束当前函数的执行
)
答案 2 :(得分:4)
不是没有必要,因为当调用关键字return时,它将指示调用switch / case的特定函数已经结束。
答案 3 :(得分:2)
不,您在break
声明中不需要switch case
。 break
实际上是可选的,但请谨慎使用。
答案 4 :(得分:2)
Break只是一个警示性声明,用于限制开关结构的控制进入另一种情况......例如,如果你有三个case语句,值是第一种情况,你使用了没有任何中断结构的情况,那么所有尽管只针对第一种情况满足条件,但将执行以下案件...... 返回可以执行asme函数,所以如果你使用return代替break就不会有问题,因为return将控制远离switch case case语句,这是当时的需要...... 希望它有所帮助....
答案 5 :(得分:1)
你不需要它,但我强烈建议在任何情况下都使用它作为良好的做法。
答案 6 :(得分:0)
return 将控件返回给调用方法,其中 break 跳转到切换块之后的第一条指令。
答案 7 :(得分:0)
从PHP 8(2020年11月)开始,您可以使用match:
<?php
function test($string) {
return match ($string) {
'test1' => 'Test 1: ',
'test2' => 'Test 2: '
} . $string;
}
尽管在这种情况下,您可以只使用一个数组:
<?php
function test($string) {
return [
'test1' => 'Test 1: ',
'test2' => 'Test 2: '
][$string] . $string;
}