这个PHP函数有什么问题?

时间:2013-02-07 12:55:03

标签: php

任何人都能告诉我这个功能有什么问题吗?

我写了这个函数来从$ reg_errors数组中获取错误,并在同一个脚本中的不同位置使用这些错误。

function testimonialErrors ($reg_errors) {
    if ( !empty($reg_errors) ) {
            foreach ( $reg_errors AS $error) {
                echo "<li>$error</li>";
            }                                       
    }
    return $error; 
}

然后我这样调用了这个函数..

if ( !empty($reg_errors) ) {
    echo '<div class="error">
                <img src="images/error.png" />
                <h3>Errors,</h3>
                <ul>';
                echo testimonialErrors($reg_errors);
        echo '</ul>
            </div>';
}

但是这段代码不起作用。

更新:这是我的新代码

function tesimonialErrors ($reg_errors) {
    if ( !empty($reg_errors) ) {
            foreach ( $reg_errors AS $error) {
                echo "<li>$error</li>";
            }                                       
    }
    return $error; 
}

并称之为

if ( !empty($reg_errors) ) {
    echo '<div class="error">
                <img src="images/error.png" />
                <h3>Errors,</h3>
                <ul>';
                tesimonialErrors($reg_errors);
        echo '</ul>
            </div>';
}

5 个答案:

答案 0 :(得分:4)

你应该研究variable scope。此时,$reg_errors未在函数范围内定义。您可以将其传递给函数:

function tesimonialErrors ($reg_errors) {
  ...

并称之为:

tesimonialErrors($reg_errors);

答案 1 :(得分:0)

为什么不这样做?

if ( !empty($reg_errors) ) {
    echo '<div class="error">
            <img src="images/error.png" />
            <h3>Errors,</h3>
            <ul>
               <li>';
    echo implode('</li><li>', $reg_errors);
    echo '    </li>
            </ul>
        </div>';
}

答案 2 :(得分:-1)

正如@Akam指出的那样,$ reg_errors属于全局范围,因此您需要使用global $reg_errors;$GLOBALS['reg_errors']

另外我建议将函数名tesimonialErrors更改为正确的英语(我假设它是testimonialErrors)。否则,The Next Guy最终可能会将其发布在TDWTF上。

答案 3 :(得分:-1)

function testimonialErrors ($reg_errors) {
    if ( !empty($reg_errors) ) {
            foreach ( $reg_errors AS $error) {
                echo "<li>$error</li>";
            }                                       
    }
    return $error;  // ****remove return statement**** 
}

答案 4 :(得分:-2)

global $reg_errors;添加到您的函数中。

function testimonialErrors () {
    global $reg_errors;
    if (!empty($reg_errors)) {
        foreach ($reg_errors as $error) {
            echo "<li>$error</li>";
        }
    }
}