0

フォームにエラーメッセージを表示しようとしていますが、表示されるのは1つだけです(常に最後のメッセージ)。foreachループを使用しようとしましたが、無効な引数エラーが発生し続けます。以下にエラーを1つずつ表示します。コードはクラス内にあります...

public $errorContainer = '';

// ------------------------------------------------------------
// ERROR MESSAGE PROCESSING
// ------------------------------------------------------------
private function responseMessage($respBool, $respMessage) {
    $return['error'] = $respBool;
    $return['msg'] = $respMessage;
    if (isset($_POST['plAjax']) && $_POST['plAjax'] == true) {
        echo json_encode($return);
    } else {
        $this->errorContainer = $respMessage;
    }
}

以下は常に私に各引数エラーに対して無効を与えます。

private function responseMessage($respBool, $respMessage) {
    $return['error'] = $respBool;
    $return['msg'] = $respMessage;
    if (isset($_POST['plAjax']) && $_POST['plAjax'] == true) {
        echo json_encode($return);
    } else {
        foreach ($respMessage as $value) {
            $this->errorContainer = $value;
        }
    }
}

ありがとうございました!

4

1 に答える 1

1

これに置き換えますforeach()

private function responseMessage($respBool, $respMessage) {
  // ...code...
  foreach ((array) $respMessage as $value) {
    $this->errorContainer .= $value;
  }
  // ...code---
}

上記の型キャストを使用(array)すると、配列型と文字列型の両方で機能します。

編集:

このソリューション(型キャスト)は、最後の努力でのみ使用してください。しかし、あなたの本当の問題は、関数に配列を渡していないことです。このコードを参照してください:

// incorrect
$msg = 'This is a message';
$this->responseMessage($some_bool, $msg);

// correct
$msg = array('This is a message');
$this->responseMessage($some_bool, $msg);

// correct
$msg = array('This is a message', 'And another message');
$this->responseMessage($some_bool, $msg);

上記のように引数を正しく渡せば、$respMessage配列にキャストする必要はありません。

于 2012-06-02T01:06:14.177 に答える