Yve*_*omb 3 php regex function return-value
我有以下功能.
我可以运行它来测试是否为true,否则为false,反之亦然,如图所示.
$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;
}
Run Code Online (Sandbox Code Playgroud)
(替代版本):
for ($i=0; $i<2; $i++)
if (preg_match($regexp, $names[$i]))
{
return true;
}
return false;
Run Code Online (Sandbox Code Playgroud)
在效率和良好的编码实践方面,哪种方式更好?或者没有区别?
对于像这样的小阵列来说,它可能不是一个问题,但我想知道它会对更大更复杂的程序产生什么影响.
不同之处在于两个循环都在检查不同的结果.
1. 第一循环检查是否$regexp匹配的数组中的所有元素-在这种情况下,它返回false只要匹配失败,如果for循环到达后return语句,这意味着所有的元素匹配.
说实话,没有围绕for循环的大括号通常会让人感到困惑(就像它先把我弄糊涂了).我建议添加相关的括号:
for ($i=0; $i<2; $i++) {
if (preg_match($regexp, $names[$i])) {
return true;
}
}
return false;
Run Code Online (Sandbox Code Playgroud)的2 次循环检查是否$regexp匹配所述阵列的任何元件-在这种情况下,它返回true只要一个匹配成功,并且如果for循环到达后返回语句,这意味着没有一个元素匹配的.
for ($i=0; $i<2; $i++) {
if (! preg_match($regexp, $names[$i])) {
return false;
}
}
return true;
Run Code Online (Sandbox Code Playgroud)