lorik Posté 2 Juillet 2008 Posté 2 Juillet 2008 Bonjour, Dans un script que j'ai trouvé sur le net, il y a des contructions de condition que je ne comprends pas, et que je n'ai jamais vu ailleurs : if($parent_url{strlen($parent_url)-1} == '/'){// instructions...} Ce que je ne comprends pas, c'est la partie {strlen($parent_url)-1}. Pas le strlen et tout le fourbi, ça pas de problème, mais que viennent faire des '{' associée à une varible ($parent_url) ? Je n'ai jamais vu ça ailleurs... Si un super pro de ce forum pouvait m'apporter la lumière, qu'il en soit béni
Dan Posté 2 Juillet 2008 Posté 2 Juillet 2008 Les accolades (curly braces) ont été héritées de Perl. Il vaut mieux utiliser les crochets (square brackets) C'est équivalent à if($parent_url[strlen($parent_url)-1] == '/') donc teste le dernier caractère de la chaîne $parent_url et le compare à '/' Mais cela sera obsolète et ne fonctionnera plus en php6. Cela ne fonctionne plus depuis Php 5.1 en mode E_STRICT. Une explication en Anglais à cette page: http://www.php.net/~derick/meeting-notes.html#cleanup-for-vs
lorik Posté 2 Juillet 2008 Auteur Posté 2 Juillet 2008 Ok, donc sur le 353797 en php5.25, je l'ai dans l'os, c'est ça ? Je vais trouver un equivalnet de l'instruction, donc. Merci Dan.
lorik Posté 2 Juillet 2008 Auteur Posté 2 Juillet 2008 (modifié) Par contre, je comprend vraiment pas cette instruction (la tienne Dan), $parent_url n'est pas un tableau, comment se fait il qu'on puisse utiliser des [] en dehors d'un tableau ? De même, j'ai aussi cette instruction : $link['url']{0}. Si je comprends bien, c'est equivalent à $link['url'][0]. Mais là aussi, $link, c'est un tableau à une dimension, pas 2. Donc on ne devrait pas pouvoir acceder au [0]. ça devient compliqué pour moi, ça Modifié 2 Juillet 2008 par lorik
Nicolas Posté 2 Juillet 2008 Posté 2 Juillet 2008 Une chaine de caractères est par définition un tableau de caractères ;-)
lorik Posté 2 Juillet 2008 Auteur Posté 2 Juillet 2008 Heu, ça veut dire qu'on peut acceder au xeme caractère d'une chaine $chaine avec $chaine[x] ? bah ça, ça m'en bouche un coin, avec tout ce que j'ai vboufé comme bouquin,s PHP, j'ai jamais vu une ligne là dessus, et je me suis toujours fait C... pour acceder à ce type de données. c'est bien ça ? C'est du php quelle version, ça ? j'ai bouffé du PHP4, mais rien d'autre...
Dan Posté 2 Juillet 2008 Posté 2 Juillet 2008 Si $toto vaut "abcdef" .... $toto[3] vaut 'd' (on commence à $toto[0] jusque $toto[strlen($toto)-1] ) Comme strlen($toto) vaut 6 parce que la chaîne fait 6 caractères, $toto[strlen($toto)-1] est donc $toto[5], donc 'f' (le dernier caractère). Comme le dit justement Nicolas, une chaîne de caractères est en fait un tableau de caractères (allant de 0 à longueur -1). C'est du php "toutes versions confondues"
Nicolas Posté 2 Juillet 2008 Posté 2 Juillet 2008 Dans ton cas $link est un tableau qui contient des chaines de caractères. C'est donc bien un tableau à 2 dimensions. $link['url'][0] == Au 1er caractère de la chaine de caractères correspondant à la ligne "url" du tableau "link"
lorik Posté 2 Juillet 2008 Auteur Posté 2 Juillet 2008 Merci de répandre sur moi ce flot de connaissances du coup, j'ai trouvé le bug
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant