/ / Pourquoi est-ce que je reçois l'erreur 'Type de décalage illégal' dans ce code? - php, foreach

Pourquoi ai-je l'erreur 'Type de décalage illégal' dans ce code? - php, foreach

Pourquoi ai-je l'erreur "Type de décalage illégal" dans ce code sur la ligne $errors[$field] .= "<div class="error"><p>" . $error . "</p></div>";?

Code:

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

Validation:

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

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

Solution:

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

Réponses:

3 pour la réponse № 1
foreach ($field as $error)

cette ligne suggère que $field est un tableau. Vous ne pouvez pas utiliser un tableau en tant que clé d'un autre tableau.

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

Pour réparer, changez votre addError méthode pour:

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