J'ai le code suivant :
$final = array();
foreach ($words as $word) {
$query = "SELECT Something";
$result = $this->_db->fetchAll($query, "%".$word."%");
foreach ($result as $row)
{
$id = $row['page_id'];
if (!empty($final[$id][0]))
{
$final[$id][0] = $final[$id][0]+3;
}
else
{
$final[$id][0] = 3;
$final[$id]['link'] = "/".$row['permalink'];
$final[$id]['title'] = $row['title'];
}
}
}
Le code semble fonctionner correctement, mais je reçois cet avertissement :
Warning: Cannot use a scalar value as an array in line X, Y, Z (the line with: $final[$id][0] = 3, and the next 2).
Quelqu'un peut-il me dire comment réparer cela ?
1 votes
C'est le vrai code ? J'ai essayé de reproduire le problème et je n'ai pas pu...
1 votes
@alvaro-g-vicario Vous avez raison de dire qu'il manque dans le code listé la déclaration qui causerait l'erreur. Quelque chose comme
$final[$id] = $row['page_id'];
est nécessaire pour que PHP se plaigne1 votes
C'est le vrai code. c'est un copier coller
1 votes
Si la base de données renvoie 0 comme valeur et que votre variable est un tableau, vous devez la redéfinir en tableau après la lecture de la base de données.
0 votes
Bug sérieux ! vous vérifiez si $final[$id][0] n'est pas vide, mais si c'est vide, 0 null... du tout pas un tableau, donc ça arrivera à 100% !
0 votes
Le pourquoi est que quelque part dans le code original
$final[$id]
était très probablement réglé sur quelque chose comme$final[$id] = 0
ou dans mon cas$final[$id] = true
... cela signifie que ce code peut essayer d'écraser quelque chose qui a déjà été défini. Vous pouvez tester en retournant le contenu de$final[$id]
ou en vérifiant le type pargettype($final[$id])
.