2016-08-09 6 views
0

$errors[$field] .= '<div class="error"><p>' . $error . '</p></div>';行のこのコードに「無効なオフセットタイプ」というエラーが表示されるのはなぜですか?このコードに「不正なオフセットタイプ」というエラーが表示されるのはなぜですか?

コード:

$errors = []; 
foreach ($validation->errors() as $field) 
{ 
    $errors[$field] = ''; 
    foreach ($field as $error) { 
     $errors[$field] .= '<div class="error"><p>' . $error . '</p></div>'; 
    } 
} 

検証:

private function addError($field, $error) 
{ 
    $this->errors[$field][] = $error; 
} 

public function errors() 
{ 
    return $this->errors; 
} 

対処:

foreach ($validation->errors() as $key => $fieldErrors) 
{ 
    $errors[$key] = ''; 
    foreach ($fieldErrors as $error) { 
     $errors[$key] .= '<div class="error"><p>' . $error . '</p></div>'; 
    } 
} 
+1

。 –

答えて

3
foreach ($field as $error) 

この行は$fieldが配列であることを示唆しています。配列を別の配列のキーとして使用することはできません。

$errors[$field] << won't work! 

は、修正にご addError方法を変更するには、次の配列は、配列のための鍵となることはできませんので

private function addError($field, $error) 
{ 
    $this->errors[$field] .= $error; //I changed [$field][] to [$field] 
} 
+0

ありがとうございました。私はforeach上で作業しました。編集された答えを確認してください。 'username'や' password'のようなフィールドにエラーがあることを知る必要があるので、あなたが提案した行を変更することはできません。 – William

+0

@William私の提案は、フィールドの名前を隠すことはありません。元のコードと私の両方で、フィールドの名前は '$ field'です。あなたがそれを働かせたら、すべてがうまくいく。 – BeetleJuice

+0

あなたの提案にそのフィールドに2つ以上の値がある場合は、以前の値を上書きしませんか? – William

関連する問題