IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

aray_push dans un while


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut aray_push dans un while
    Bonjour à tous à l'int.rieur d'une fonction main():


    Ça fait 2 fois que j'ai ce genre de tuile. D'abord avec $matches que j'ai résolu en utilisant array_push. Maintenant c'est avec $output dans array_push??!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    $output = array();
     
    			// open file for reading
    			if(!($myFile = fopen($this->fichier, "r")))
    			{
    				print("Error:");
    				print("$this->fichier est impossible à lire\n");
    				exit;
    			}
     
    	while(!feof($myFile))
    	{
    	//read a line from the file
    	$ligne = fgets($myFile, 255);
     
    	preg_match($rechercher, $ligne, $matches);
     
    	             if(!empty($matches)){
    		array_push($output,$matches[1]);
     
                             //ici c'est ok
    		echo $matches[1]. "\n" ;
                             //ici c'est ok
    		print_r($output);
    		}
    	}
     
    	//close the file
    	fclose($myFile);
    //Ici ça n'imprime rien
    print_r($output);
    Merci de votre attention

    JP

  2. #2
    Membre émérite Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Par défaut
    vu sur php.net : function print_r
    Gardez en tête que print_r() place le pointeur de tableau à la fin du tableau

  3. #3
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut
    Je ne comprends pas.

    Si je commente le print_r dans la boucle: même résultat.
    Si j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
    print_r ($a);
    print_r ($a);
    Le deuxième print_r repart du début.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    ---------- PHP ----------
    Array
    (
        [a] => apple
        [b] => banana
        [c] => Array
            (
                [0] => x
                [1] => y
                [2] => z
            )
     
    )
    Array
    (
        [a] => apple
        [b] => banana
        [c] => Array
            (
                [0] => x
                [1] => y
                [2] => z
            )
     
    )
    Output completed (0 sec consumed) - Normal Termination

    En utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    			foreach($output as $key=>$value){
    			printf("%2.0f",  $counter++);
    			echo   '  ' . $value. "\n";
    			$buffer = $buffer . $value . "\n";
    cela fonctionne mais ça n'explique pas pourquoi print_r et print_r(sort($output)); n'imprime pas alors que print_r(array_unique ($output)); imprime.

  4. #4
    Membre émérite Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Par défaut
    (en effet, le print_r semble capable de remettre le pointeur au debut !)

    bizarre ca marche chez moi...
    si tu fais un var_dump de ta variable, c'est pareil ?

  5. #5
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut
    Citation Envoyé par sebhm Voir le message
    si tu fais un var_dump de ta variable, c'est pareil ?
    Oui

  6. #6
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Tout simplement parceque les fonctions sort ne renvoie pas un tableau modifié mais fonctionne par référence.

    En lisant la doc on voit que :

    bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
    Du coup print_r(sort($montabelau)) renvoi bool(true)

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/05/2006, 23h46
  2. [SQL] Dans un while avec fichier
    Par ozzmax dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 10/02/2006, 20h54
  3. Réponses: 14
    Dernier message: 13/10/2005, 12h55
  4. [CR8.5] Pbm d'affichage dans un While
    Par .:Tieri:. dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 14/07/2004, 10h17
  5. Réponses: 3
    Dernier message: 25/11/2002, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo