Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1582 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Différence simple/double guillemet avec un array

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Différence simple/double guillemet avec un array

n°2067224
Antoine T
Posté le 31-03-2011 à 10:01:29  profilanswer
 

Bonjour,
 
J'ai tourné un peu en rond avant de trouver la solution, mais du coup, je ne me l'explique pas du tout. Voici le code qui posait problème (il est dans une boucle d'où le $i) :

Code :
  1. // les résultats sont corrects et s'affichent
  2. echo $result[$i]['lieux'] , ' : ', $result[$i]['nom'] , ' ' , $result[$i]['prenom'];
  3. // ici, dans le select s'affiche ceci : array['lieux']
  4. echo "<select name='lieux'><option>$result[$i]['lieux']</option></select>";


 
Du coup, cette méthode fonctionne

Code :
  1. echo '<select name="lieux"><option>'.$result[$i]['lieux'].'</option></select>';


 
Mais je ne sais pas trop pourquoi. J'ai pour habitude (bonne ou mauvaise?) d'écrire la partie html en double guillement, et les variables à l'intérieur sans guillement ni point, ce qui fonctionne. Mais pour les array, ça change?
 
Merci pour vos lumières !

mood
Publicité
Posté le 31-03-2011 à 10:01:29  profilanswer
 

n°2067239
_neko_
Posté le 31-03-2011 à 10:54:32  profilanswer
 

C'est tout simple, l’interprétation des chaines effectué par php ne lui permet de traverser qu'un seul niveau de tableau.

Code :
  1. echo "blabla : $montab['plop']"; // ceci fonctionne si le tableau n'a qu'une seule dimension
  2. echo "blabla : $montab['plop']['ploup']";// ici php essayera d’interpréter seulement $montab['plop'] et fera une jolie parse error
 


A+


Message édité par _neko_ le 31-03-2011 à 10:55:55
n°2067263
Antoine T
Posté le 31-03-2011 à 12:15:19  profilanswer
 

Merci pour ta réponse, seulement, je n'ai même pas d'erreur parse; est-ce dû au fait que j'utilise une variable pour le deuxième niveau?

n°2067290
MEI
|DarthPingoo(tm)|
Posté le 31-03-2011 à 14:43:52  profilanswer
 

Non mais déjà à partir du moment où tu génères du code HTML qui n'est pas même de l'HTML... :o
Sérieusement, depuis quand on a le droit d'écrire des attributs entre simple quote en HTML ? :heink: C'est des doubles quotes, et donc ta questions ne se pose même plus...
 
Si on suit les recommandations de Zend et du W3C la seule syntaxe correcte est :
(cf. : http://php.net/manual/en/language.types.string.php)

Code :
  1. echo '<select name="lieux"><option>' . $result[$i]['lieux'] . '</option></select>';


 
Néanmoins tu pourrais aussi écrire :

Code :
  1. echo "<select name=\"lieux\"><option>{$result[$i]['lieux']}</option></select>";


Dès que la syntaxe est complexe, entre doubles quotes, les accolades aident.
 


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2067294
Antoine T
Posté le 31-03-2011 à 14:47:24  profilanswer
 

Merci pour cette réponse, je me posais la question sur cette habitude, qui donc est mauvaise ! Et cool les accolades, je ne savais pas !

n°2067658
gilou
Modérateur
Modzilla
Posté le 02-04-2011 à 13:31:22  profilanswer
 

MEI a écrit :

Non mais déjà à partir du moment où tu génères du code HTML qui n'est pas même de l'HTML... :o
Sérieusement, depuis quand on a le droit d'écrire des attributs entre simple quote en HTML ? :heink: C'est des doubles quotes, et donc ta questions ne se pose même plus...

Non mais, n'importe quoi!
On a toujours eu le droit, et ce depuis l'ancêtre de la syntaxe HTML, ie le SGML (et peut être même le GML) d'utiliser des simples ou des doubles quotes pour délimiter les valeurs d'un attribut.
 
Je suis pas un spécialiste de PHP, mais comme PHP est le fils batard de Perl et d'une serveuse web, voici ce qui se passe en perl:
my $variable = "TOTO";
print "toto vaut: ", $variable; #imprimera toto vaut: TOTO
print "toto vaut: $variable";   #imprimera toto vaut: TOTO
print 'toto vaut: $variable';    #imprimera toto vaut: $variable
 
Bref, la double quote fait qu'il y a remplacement des variables par leurs valeurs, tandis que la simple quote fait que tout est interprété comme du texte pur, sans interprétation.
Ce n'est pas limité aux variables: print "\n" va imprimer un retour à la ligne, tandis que print '\n' va imprimer un backslash et un n.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Différence simple/double guillemet avec un array

 

Sujets relatifs
Implementation de map a "double sens"[perl] Probleme double lecture
[Rémunération]Cherche Programmeur pour une simple pageTableau à double entrées et séparation des couches
différence entre poll et selectarray et usort
[Resolu][JS] Quelle différence entre mes deux codes ?[Step 7 basic] Enregistrer une séquence (array)
[PHP] Insérer un array dans un lien hypertextedifference entre debug et release
Plus de sujets relatifs à : Différence simple/double guillemet avec un array


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR