所以我有一个包含所有函数调用的数组来检查表单的输入。然后,我在数组中有一个foreach循环,以查看validate函数的返回值是true还是false。根据该结果,foreach所处的函数返回true或false。我想弄清楚的问题是,如果所有验证函数都恢复正常,如何只返回一次。
这是我的代码:
public function valInputs()
{
$valArray = array(
valName($firstName),
valName($lastName),
valPhone($phone),
valEmail($email)
); // these functions return true/false depending on validation
foreach($valArray as $value)
{
if(!$value)
{
return false;
break;
}
else
{
return true; // the problem is, true gets returned X number of times
}
}
}
关于如何保持多次返回的任何想法?谢谢你的帮助。
答案 0 :(得分:12)
返回调用会停止foreach循环和函数。实际上你可以在循环中返回true:
foreach($valArray as $value)
{
if(!$value)
{
return false;
// break is not needed, and should NOT be used in this case,
// as it stops the foreach loop.
// It will never be reached anyways, seeing how you return false just above.
}
}
return true;
如果它到达循环的末尾,则表示它没有返回false。因此它应该返回true。
答案 1 :(得分:3)
为什么不呢:
public function valInputs() {
return (valName($firstName) && valName($lastName) && valPhone($phone) && valEmail($email));
}
如果所有这些都为真,则返回true,如果至少其中一个为假,则返回false。坦率地说,我不确定为什么你需要一个foreach循环。
答案 2 :(得分:2)
有趣的方法是
public function valInputs()
{
$valArray = array(
valName($firstName),
valName($lastName),
valPhone($phone),
valEmail($email)
); // these functions return true/false depending on validation
return array_product( $valArray ) === 1;
}
答案 3 :(得分:0)
根据定义,return结束函数。你不能多次返回。
查看pst的评论,检查你是否多次调用该函数。