也许我的问题在某种程度上是基本的或愚蠢的,但我需要验证这一点。
我有一个php函数“functionA”,它在for循环中被重复调用:
...
for($j=0; $j<$n_samples;$j++) {
if($type=='triband') {
functionA($arg1,$arg2);
}
}
...
和我的功能A:
...
functionA($arg1,$arg2) {
$wide_avg_txon = substr($bit_sequence,0,1);
if($wide_avg_txon==0)
{
echo " ---> is OFF...<br />";
}
else
{
echo " ---> is ON...<br />";
// if is ON then skip execution of code inside the function
return;
}
// DO SOME STUFF!
}
...
所以我不想在functionA中执行其余的代码,如果“$ wide_avg_txon == 1”,我只想继续为下一次迭代执行for循环!
以上代码是否有效?有什么区别:'return'和'return false'? 'return false'也会起作用:
...
if($wide_avg_txon==0)
{
echo " ---> is OFF...<br />";
}
else
{
echo " ---> is ON...<br />";
// if is ON then skip execution of code inside the function
return false;
}
谢谢!
答案 0 :(得分:3)
您的return
将起作用,因为您对返回的结果不感兴趣。你只想继续for循环。
如果您的代码构造经过了测试,并且您想知道测试结果,那么您可以使用return false
让其余代码知道测试失败。
答案 1 :(得分:1)
您的功能A将完美运行,但为了便于阅读,最好以这种方式进行格式化:
...
function functionA($arg1, $arg2) {
$wide_avg_txon = substr($bit_sequence,0,1);
// if is ON then skip execution of code inside this function
if ($wide_avg_txon != 0) {
echo " ---> is ON...<br />";
return;
}
echo " ---> is OFF...<br />";
// DO SOME STUFF!
}
...
不同之处在于您立即取消了您不想要的“开启”条件,并尽快退出该功能。然后函数的其余部分正在处理你想要做的事情,而不是坐在if语句块中。
答案 2 :(得分:0)
函数将在return语句后停止。你可以在这里阅读更多信息: http://php.net/manual/tr/function.return.php
例如,您可以执行以下操作来测试此内容:
<?php
$_SESSION['a'] = "Naber";
function a(){
return;
unset($_SESSION['a']);
}
a(); // Let see that is session unset?
echo $_SESSION['a'];
?>
由于
答案 3 :(得分:0)
return false
返回false
,一个布尔值。 return
将返回NULL
。也不会执行任何后续代码。
因此,为了扩展RST的答案,两个回报都不会满足if
条件:
if(functionA($arg1,$arg2))
echo'foo';
else
echo'bar';
bar
会得到回应。
这可能有用,如果你有:
$return=functionA($arg1,$arg2);
if($return===NULL)
echo'Nothing happened';
elseif($return===false)
echo'Something happened and it was false';
else
echo'Something happened and it was true';
NULL
非常实用。