2012-06-02 7 views
0

Я пытаюсь отображать сообщения об ошибках в форме, но отображается только одна (последняя всегда). Я попытался использовать цикл foreach, но продолжаю получать недопустимую ошибку аргумента. Следующие ошибки отображаются один за другим. Код находится внутри класса ...PHP 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; 
     } 
    } 
} 

Спасибо!

+1

Является ли '$ respMessage' массивом? – nickb

+0

Как называется эта функция? –

+0

Эта функция не вызывается - $ errorContainer. Извините, он должен показывать приватное, а не публичное. Я имею в виду функцию, называемую только внутри класса. $ this-> responseMessage (true, $ msg); – user1002039

ответ

1

заменить вашу foreach() с этим:

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

Использование типа литья (array) выше будет делать это работает как для массива и строкового типа.

Edit:

Используйте это решение (тип отливка) только в последней попытке. Но ваша реальная проблема заключается в том, что вы не передаете массив функции. Смотрите этот код:

// 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 в массив.

+0

Но я все еще получаю аргумент Invalid для аргумента foreach(). – user1002039

+0

Похоже, что '$ respMessage', который вы передали функции, не является массивом. Вы можете использовать '$ respMessage' для массива, как мой отредактированный код. – flowfree

+1

Я соглашаюсь на concat, но этот актер не является на самом деле решением. Проблема в amont. – zessx

Смежные вопросы