8768 sujets

Développement web côté serveur, CMS

Bonjour à vous tous,

Je poursuis mon petit bonhomme de chemin dans le développement PHP et je voudrais savoir si l'un de vous saurait m'expliquer comment interpréter les messages d'erreur que le PHP affiche parfois quand on écrit mal la syntaxe.

Par exemple, considérons le bout de code suivant :

$saisons = array(0 => 'Eté', 1 => 'Hiver', 2 => 'Automne', 3 => 'Printemps');
echo $saisons;

Dans la première instruction, des valeurs sont associées à des clés, le tout étant affecté à une variable déclarée comme étant un tableau de données. Dans l'instruction suivante, on demande un affichage à l'écran des valeurs mais le navigateur nous renvoie un message d'erreur avec le résultat "Array" tout en bas. L'instruction echo n'affiche pas le contenu du tableau mais indique juste que c'est un tableau de données.

upload/1649048212-62242-capturedancran2022-04-0406500.png

Quelqu'un saurait m'expliquer comment comprendre ce message d'erreur ? A quoi correspondent Notice: Array to string conversion in C:\wamp\www\boucles\conditions.php on line 10, Call stack, Time, Memory, Function, Location, etc. Mes cours n'abordent absolument pas ce sujet.
Modifié par ObiJuanKenobi (04 Apr 2022 - 07:01)
Bonjour, Array to string conversion signifie que le tableau associatif $saisons a dû être converti en la chaine "Array" pour pouvoir être affiché.
La pile d’exécution (call stack) donne l’enchainement des commandes qui se sont appelées les unes les autres avant que ça tombe sur une erreur, ce qui permet de remonter plus facilement à la fonction responsable.
Si vous voulez afficher un tableau avec son contenu, il vaut mieux recourir à la fonction print_r ou à var_dump.
Modifié par Anedja (04 Apr 2022 - 09:36)
Salut

Je rejoins Anedja sur l'explication.
le mieux et de faire un

echo "<pre>";
var_dump($TA_VARIABLE);
echo "</pre>";
die();


Et là tu auras n'importe quel variable en "var_dump" de manière lisible

echo de php attends un string uniquement
https://www.php.net/manual/fr/function.echo.php

Du coup quand tu lui envoi autre chose qu'un string, php te lève une erreur.
Ce n'est d'ailleurs vraiment une erreur mais un avertissement (une notice php), d'ailleurs on voit qu'il t'affiche "Array" en dessous de l'erreur. c'est le type de ta variable dans le echo.
Modifié par JENCAL (04 Apr 2022 - 10:16)
Donc, si j'ai bien compris Jencal, j'ai une erreur (ou plutôt un avertissement ou une notice PHP) parce que j'ai demandé un écho, qui n'affiche qu'une chaîne de caractères (string), alors que le résultat attendu correspond à des valeurs dans un tableau ?

J'ai abordé après les fonctions print_r(); et var_dump(); ainsi que la balise <pre> dans une instruction PHP. Je voulais seulement avoir plus de détails sur les notices PHP parce que c'était du chinois pour moi.

Merci pour vos explications qui m'apportent des éclaircissements.

A propos, j'ai remarqué que Jencal utilise des doubles quotes pour envoyer la balise <pre> et </pre> au navigateur pour son interprétation. Moi, j'ai utilisé de simples quotes. Il y a une distinction à faire entre les deux, des règles à respecter, en sachant qu'il faut "échapper" quand on utilise déjà des simples quotes dans une chaîne de caractères ?
Modifié par ObiJuanKenobi (06 Apr 2022 - 10:12)
La seule différence est qu’entre apostrophes, le contenu est interprété littéralement, alors qu’entre guillemets, les variables sont interprétées en leur contenu.
Par exemple '$saison[3]' est bien la chaine '$saison[3]', alors que "$saison[3]" est équivalent à 'Printemps'.
Voir le chapitre sur les chaines dans le manuel P.H.P.
Meilleure solution