0

我有一个函数,我在其中传递数组参数来验证它。然后在下一页我插入数组参数。如下:

function check_subject($sub_array)
{
    foreach($sub_array as $value)
    {
        if (!empty($value))
        {
            if (!preg_match('/^[0-9a-zA-Z ]{2,20}$/', $value))
            {
        return "Not supported format";
            }
         }
    }
}

我插入的其他页面$errors[] = check_subject($g8_sub_vali);并将返回结果存储在 $error[] 数组中。

如果还有其他人按以下方式执行某些操作,那么我会打印错误..

if($errors)
        {
            foreach ($errors as $msg) 
            {
                if(!empty($msg))
                {
                echo " - $msg<br />\n";
                }
            }
        }
else
        {
            echo "There is no error";
                }

但我没有得到“没有错误”的 else 循环值。我认为从函数返回存在问题。你能建议我吗?

4

5 回答 5

0

试试这个来显示哪些主题不受支持的格式:

功能:

function check_subject($sub_array) {
    $results = array();
    foreach ($sub_array as $value) {
        if (!empty($value) && preg_match('/^[0-9a-zA-Z ]{2,20}$/', $value)) {
            array_push($results, false);
        }
        else {
            array_push($results, true);
        }
    }
    return $results;
}

继续:

$errors = check_subject($g8_sub_vali);

foreach ($errors as $key=>$error) {
    if ($error) {
        echo "error on subject number " . ($key+1);
        // do more stuff
    }
}
于 2013-08-08T12:18:05.453 回答
0

以这种方式返回

return(array("Not supported format"));
于 2013-08-08T12:03:32.027 回答
0

由于您正在制作:-

$errors[] = check_subject($g8_sub_vali);

即使您正在检查有效条目,此行也会将空值附加到数组,因为函数将返回空值。

因此,如果您想防止这种情况发生,您应该这样做:-

$err = check_subject($g8_sub_vali);
if(empty($err)==false)
   $errors[] = $err;

这将为您提供有效的错误值,如果没有错误,您将进入 else 循环。

于 2013-08-08T12:07:07.560 回答
0

尝试这个,

$errors = array();   
if($err = check_subject($g8_sub_vali)){
    $errors[] = $err;
}
于 2013-08-08T12:07:12.660 回答
0

用这个

function check_subject($sub_array)
{
    $array = [];
    foreach($sub_array as $value){
        if (!preg_match('/^[0-9a-zA-Z ]{2,20}$/', $value))
        {
            array_push($array, $value.' - Not supported format');
        }

    }
    return $array;
}

如果值不包含字母数字值,array_push 会将消息添加到数组的末尾。

于 2013-08-08T12:09:10.870 回答