php7

Comment résoudre l’erreur Fatal error: Uncaught Error: [] operator not supported for strings

Temps de lecture estimé : < 1 minute

Cette erreur survient à partir de php 7.1 :

Fatal error: Uncaught Error: [] operator not supported for strings

Cette erreur survient en fait lorsque vous avez initialisé une variable avec un certain type, comme par exemple une chaine (string) et qu’ensuite vous essayez d’y ajouter une case d’un tableau. Typiquement ce code suivant provoquera l’erreur.

$foo = 'foo';
$foo[] = 'bar'; // ERROR!

Le souci provient lorsqu’on essaye de push une valeur dans un tableau dans une variable qui n’a pas été définie comme un tableau, qu’il s’agisse d’une chaine, d’un entier, d’une classe, etc. Tous ces exemples ci-dessous retourneront une erreur

$declaredAsString = '';
$declaredAsString[] = 'value';

$declaredAsNumber = 1;
$declaredAsNumber[] = 'value';

$declaredAsObject = new stdclass();
$declaredAsObject[] = 'value';

Résoudre l’erreur Fatal error: Uncaught Error: [] operator not supported for strings

Temps total : 5 minutes

Trouver la ligne qui provoque l’erreur

Grâce au log d’erreur de votre site ou application, vous obtiendrez directement la ligne provoquant le souci. Dans l’exemple suivant, il s’agit d’un fichier d’un thème WordPress, et l’erreur se trouve à la ligne 108[php7:error] PHP Fatal error: Uncaught Error: [] operator not supported for strings in /functions.php:108

Initialiser la variable avec un tableau array

Allez dans le fichier à la ligne provoquant l’erreur et déterminez quelle est la variable posant souci. une fois que vous l’avez trouvé, relisez votre code pour trouver l’endroit où vous initialisez cette variable.Une fois que vous avez trouvez, il faut donc initialiser votre variable avec un tableau, vous pouvez utiliser l’opérateur []

Variante : initialiser la variable avec array()

Vous pouvez aussi initialiser votre variable directement avec un array, cette solution alternative fonctionne également

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.