0

我正在尝试在表单上显示错误消息,但只显示一条(总是最后一条)。我尝试使用 foreach 循环,但我不断收到无效参数错误。下面一一显示错误。代码在一个类中......

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 回答