使用返回时是否需要中断开关?

时间:2011-06-13 11:59:49

标签: php

我想知道在使用“return”时是否需要在“switch”功能中使用“break”。

function test($string)
{
  switch($string)
  {
    case 'test1':
      return 'Test 1: ' . $string;
    case 'test2':
      return 'Test 2: ' . $string;
  }
}

我已经尝试过了,没有“休息”就行了。但我需要知道这是否安全。谢谢。

8 个答案:

答案 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 casebreak实际上是可选的,但请谨慎使用。

答案 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;
}

https://php.net/control-structures.match