Php 先返回False还是True有什么区别吗?

Php 先返回False还是True有什么区别吗?,php,regex,function,return-value,Php,Regex,Function,Return Value,我有以下功能。 我可以运行它来测试是否为真,否则为假,反之亦然,如图所示 $fname=$_POST['fname']; $lname=$_POST['lname']; function namecheck ($fname,$lname) { $names= array ($fname,$lname); $regexp ="/^[A-Za-z]+$/"; //filter through names for ($i=0; $i&l

我有以下功能。
我可以运行它来测试是否为真,否则为假,反之亦然,如图所示

    $fname=$_POST['fname'];
    $lname=$_POST['lname'];

function namecheck ($fname,$lname) 
{    
    $names= array ($fname,$lname);

    $regexp ="/^[A-Za-z]+$/";

    //filter through names 
    for ($i=0; $i<2; $i++)
    if (! preg_match($regexp, $names[$i])) 
    {
         return false;
    }
    return true;
}
$fname=$\u POST['fname'];
$lname=$_POST['lname'];
函数名称检查($fname,$lname)
{    
$names=数组($fname,$lname);
$regexp=“/^[A-Za-z]+$/”;
//筛选名称

对于($i=0;$i),不同之处在于两个循环都在检查不同的结果

  • 第一个循环检查
    $regexp
    是否匹配数组的所有元素-在这种情况下,一旦匹配失败,它将返回
    false
    ,如果达到for循环后的return语句,则表示所有元素都匹配。
    老实说,在
    for
    循环的
    周围没有大括号通常会让人困惑(就像它首先让我困惑一样)。我建议添加相关大括号:

    for ($i=0; $i<2; $i++) {
        if (preg_match($regexp, $names[$i])) {
             return true;
        }
    }
    return false;
    

在代码中,您只需检查一次迭代($i=0)

您可以使用:

for ($i=0; $i<2; $i++){
    if (!preg_match($regexp, $names[$i])) return false;
}
return true;

for($i=0;$i true)。方法将在出现第一个错误时停止迭代。

我建议为函数指定一个更有意义的名称,如is_name_valid()。它有助于澄清您的“问题”将立即消失,因为当名称满足您的要求时,它必须返回True,否则返回False。

@Skippy。检查您的循环。在这两种情况下,如果
如果
条件计算为
True
,如果将从
如果
块返回值,如果条件为False,它将不会进入块e> 如果
阻塞,并执行for循环中的最后一条语句,这将返回其他内容。在任何情况下,您的循环只会迭代一次。@Skippy.哦!太好了。我没有看到
for
循环周围没有花括号。我错误地将方法的右大括号作为
for
循环的右大括号。@Skippy.这就是为什么你不应该从循环中删除大括号。这只会让人困惑。RohitJain做得很好+1…@Skippy在你的代码中有很多不好的做法。我认为没有理由不验证输入。你应该首先检查是否设置了$\u POSTnot@Skippy谢谢。如果你的目标是国际人士,请检查这个n name可以有a-z以外的词,关于函数和循环,我同意Rohit.。因此,添加另一个答案是不值得的:)我实际上自己使用camelCase,我只想遵循问题中代码的样式(“名称检查”)。事实上,我在代码中看到了许多相同的错误。因此,不,我以前没有看你的问题)(只有经验)
for ($i=0; $i<2; $i++) {
    if (! preg_match($regexp, $names[$i])) {
         return false;
    }
}
return true;
for ($i=0; $i<2; $i++){
    if (!preg_match($regexp, $names[$i])) return false;
}
return true;