Maison > Questions et réponses > le corps du texte
J'ai finalement réussi à mettre à jour mon installation PHP de 7.2 à 7.4 (en prévoyant de mettre à jour directement vers la version actuelle, mais en le faisant par étapes) et j'ai eu une erreur étrange lorsque j'ai exécuté le script existant :
Message : Tentative d'accès au décalage du tableau sur une valeur de type null
La ligne qui apparaît remplit simplement un tableau à partir d'un simple jeu de résultats MySQL.
for($i = 0; $resultArray[$i] = mysqli_fetch_row($result)[0]; $i++) ;
Le script fonctionne toujours bien, mais je n'aime tout simplement pas les erreurs. Je ne comprends pas pourquoi cela ne va pas et j'ai cherché pendant des heures en vain. Pourquoi cette erreur se produit-elle ? Existe-t-il un moyen d'effectuer la même opération sans erreur ?
P粉0769873862024-01-03 16:51:35
Selon la documentation, une fois la fin de l'ensemble de résultats atteinte, mysqli_fetch_row
将返回 null
.
Vous pouvez utiliser des foreach
loops. Je ne le recommande pas, mais c'est une solution possible.
foreach ($result->fetch_all() as [0 => $resultArray[]]); // no body needed
Vous n’avez vraiment pas besoin d’utiliser cet appareil étrange. Vous pouvez utiliser array_column() pour des opérations plus simples.
$resultArray = array_column($result->fetch_all(), 0);
P粉6814003072024-01-03 14:58:49
mysqli_fetch_row
将在某个时刻返回 null
(d'après la documentation, il fait toujours cela lorsqu'il manque de lignes à récupérer). Mais vous ne l'avez pas vérifié avant d'essayer de lire son 0ème index, vous obtenez donc l'erreur.
De nombreuses personnes utilisent ce style pour récupérer des lignes :
while ($row = mysqli_fetch_row($result)) { $resultArray[] = $row[0]; }
Cela évitera de tels problèmes. C’est également ainsi que vous le voyez souvent dans les exemples et la documentation.