Page 1 sur 1

synthax : concaténuation dans array

Posté : 27 oct. 2006, 16:18
par TrX
Bonjour
Comment dire de classer les reponses d'une variable concaténuée ? le code :
<?php
$dir = "pix";
  if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
      while (($file = readdir($dh)) == TRUE) {
        if ( preg_match ( "#photo#", $file)) {   
          $names = array (''.$file.'');
        echo $names[0]; 
         // for ($nbr = 0; $nbr < 5; $nbr++){
         //   echo $names[0];
             // }
           }
        }
     }
  }
?>
au lieu de les classer et d'afficher le premier il donne tous les noms de fichiers dans l'url -> oOo

Posté : 27 oct. 2006, 16:25
par Ryle
Il ne fait que ce que tu lui demandes ;)

Ici, tu écrases à chaque fois ta variable $names au lieu d'ajouter de nouveaux éléments dans le tableau :
$names = array (''.$file.''); 
Du coup, l'élément 0 est toujours le dernier qui a été affecté :)

Ajoute une paire de crochet à $names et regarde le résultat :)
$names[] = array ($file);
A noter que les chaines vides à droite et à gauche de ta variable ne servent asbolument à rien :)

Posté : 27 oct. 2006, 16:40
par TrX
$names[] = array ($file);
reponce du serveur : ArrayArrayArrayArrayArrayArrayArrayArrayArrayArray
$names[] =  ($file);
réponce : photo-01.jpgphoto-01.jpgphoto-01.jpgphoto-01.jpgphoto-01.jpgphoto-01.jpgphoto-01.jpgphoto-01.jpgphoto-01.jpgphoto-01.jpg
normal on s'en raproche

Posté : 27 oct. 2006, 16:53
par Ryle
Dans le premier cas, tu indique que l'élément que tu ajoutes dans $names[] est un tableau : array($file). D'où, lors de l'affichage de l'élément zéro, il t'écrive en toutes lettre Array :)

Dans le second, tu te contente de mettre la valeur directement dans le tableau, mais comme tu l'affiches dans la boucle, il te le répète autant de fois que tu as d'élément dans le tableau :)

Posté : 27 oct. 2006, 17:31
par TrX
merci pour les infos Ryle ;)