将foreach值从函数返回到数组

时间:2013-08-08 11:56:03

标签: php

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

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循环值。我认为从函数返回有一个问题。你能建议我吗?

5 个答案:

答案 0 :(得分:0)

以这种方式回归

return(array("Not supported format"));

答案 1 :(得分:0)

因为你正在制作: -

$errors[] = check_subject($g8_sub_vali);

即使您正在检查有效条目,该行也会向数组附加一个null,因为函数将返回null。

因此,如果您想要阻止这种情况,您应该: -

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

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

答案 2 :(得分:0)

试试这个,

$errors = array();   
if($err = check_subject($g8_sub_vali)){
    $errors[] = $err;
}

答案 3 :(得分: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;
}
如果value不包含alpha numberic值,

array_push会将消息添加到数组的末尾。

答案 4 :(得分: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
    }
}