"return"キーワードのPHPのToplevelと同等の機能ブロックですか?機能ブロック外の "return"キーワードのPHPにおけるToplevelと同等ですか?
return
キーワードの素敵な、有用な特性は、それが呼び出されたときに、 はそれはそれは関係なく、他の ネストされたブロックは、それを囲むことができるどのように多くの、ではありませんした主な機能ブロックを終了していることです。
トップレベルのスコープに相当するものは認識していません。 は、関数 を関数の "展開"の系統的な方法で呼び出すことをお勧めします。そのためにはをコード内のすべてのreturn
に対処する体系的な方法を知る必要があります。
$searchResult=seekAUnicorn();
の拡大は、このようなものに見えるかもしれません
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));
}
}
例えば考えてみましょう:
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;
}
}
をしかし、このようにそれを行うには、あなたはそれぞれの周りのネストされたブロック の数をカウントする必要があります入れ子にされた戻り値は、長くて複雑なコード のために苦労してエラーを起こしやすくなります。もっと簡単な方法はありますか?
PHPでは動作しないCおよびC++用のソリューションがあります。これはPHPの質問であり、CまたはC++の質問ではありません。タグの削除 – Leandros
@Leandrosご協力ありがとうございます。好奇心から、CとC++のための解決策は何ですか? –
'goto'。これは一般的に使用されるソリューションです。 – Leandros