-1

この関数の何が問題なのか誰か教えてもらえますか?

$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>';
}
4

5 に答える 5

4

variable scopeを調べる必要があります。現時点で$reg_errorsは、関数のスコープで定義されていません。関数に渡すことができます:

function tesimonialErrors ($reg_errors) {
  ...

そしてそれを次のように呼び出します:

tesimonialErrors($reg_errors);
于 2013-02-07T12:57:01.960 に答える
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>';
}
于 2013-02-07T14:12:18.280 に答える
-1
function testimonialErrors ($reg_errors) {
    if ( !empty($reg_errors) ) {
            foreach ( $reg_errors AS $error) {
                echo "<li>$error</li>";
            }                                       
    }
    return $error;  // ****remove return statement**** 
}
于 2013-02-07T13:47:36.270 に答える
-1

@Akam が指摘したように、 $reg_errors はグローバル スコープにあるため、 または のいずれglobal $reg_errors;かを使用する必要があります$GLOBALS['reg_errors']

tesimonialErrorsまた、関数名を適切な英語に変更することをお勧めします (それはtestimonialErrors. そうしないと、The Next Guy が TDWTF に投稿してしまう可能性があります。

于 2013-02-07T13:00:43.777 に答える
-2

関数に追加global $reg_errors;します。

function testimonialErrors () {
    global $reg_errors;
    if (!empty($reg_errors)) {
        foreach ($reg_errors as $error) {
            echo "<li>$error</li>";
        }
    }
}
于 2013-02-07T12:57:10.693 に答える