Toplevel相当于PHP的"返回"关键字外部功能​​块?

时间:2016-04-27 16:10:45

标签: php

Toplevel相当于PHP的"返回"功能块外的关键字?

return关键字的一个不错的,有用的属性是,当它被调用时, 无论有多少,它都会退出它所在的主要功能块 嵌套的块可以包围它。

我不知道顶级范围的任何等价物。而且我想 有一个系统的方式来扩大"一个功能 调用相同的语句列表,为此我需要知道 一种处理代码中所有return的系统方法。

考虑例如

function seekAUnicorn() 
{
   for($i=1;some_test($i);$i++) {
       for($j=1;some_test($j);$j++) {
          for($k=1;some_test($k);$k++) {
             if(unicorn_test_for_three_parameters($i,$j,$k)) return(array($i,$j,$k));
          }
          if(unicorn_test_for_two_parameters($i,$j)) return(array($i,$j));
       }
       if(unicorn_test_for_one_parameter($i)) return(array($i));
   }
} 

$searchResult=seekAUnicorn();的扩展可能如下所示:

for($i=1;some_test($i);$i++) {
       for($j=1;some_test($j);$j++) {
          for($k=1;some_test($k);$k++) {
             if(unicorn_test_for_three_parameters($i,$j,$k))  {
              $searchResult = array($i,$j,$k);
              break 3;
             }
          }
          if(unicorn_test_for_two_parameters($i,$j)) {
            $searchResult = array($i,$j);
            break 2;
           } 
       }
       if(unicorn_test_for_one_parameter($i)){
            $searchResult = array($i);
            break;
        } 
   } 

但要这样做,您需要计算嵌套块的数量 围绕每个嵌套返回,这变得艰苦而且容易出错 更长,更复杂的代码。有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

在您的情况下,您可以使用goto(自PHP 5.3起)或添加另一个简单的检查。

$loopcheck = true;
for($i=1;some_test($i) && $loopcheck;$i++) {
       for($j=1;some_test($j) && $loopcheck;$j++) {
          for($k=1;some_test($k) && $loopcheck;$k++) {
             if(unicorn_test_for_three_parameters($i,$j,$k))  {
              $searchResult = array($i,$j,$k);
              $loopcheck = false;
              break;
             }
          }
          if(unicorn_test_for_two_parameters($i,$j)) {
            $searchResult = array($i,$j);
            $loopcheck = false;
            break;
           } 
       }
       if(unicorn_test_for_one_parameter($i)){
            $searchResult = array($i);
            $loopcheck = false;
        } 
   }