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 :

[Tableaux] Variable dans un tableau [Fait]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut [Tableaux] Variable dans un tableau
    Bonjour à tous,
    Voilà j'ai un souci dans mon code, mon code doit me permettre de récupérer des informations d'un dossier XML pour les mettre ensuite dans une base de données MySQL.

    Jusqu'a présent j'arrive à tirer les informations du dossier XML pour les afficher sur ma page PHP. J'utilise cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($aa as $k=>$v){
       echo $v."<br />";
    }
    Je voudrais mettre ma variable $v dans un tableau, j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach ($aa as $k=>$v){
       echo $v."<br />";
       $i=0;
       $tab[$i]=$v;
       $i++;
    }
    Mais quand j'affiche mon tableau, j'ai que des Array qui s’affichent pour chaque ligne.

    Pour vous aidez je mets mon code complet :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <?php
    $db = readDatabase("mon fichier.xml");
     
    class S2MI {
     
        function S2MI ($aa) {
            foreach ($aa as $k=>$v){
    			echo $v."<br />";
    		}
        }
    }
     
    function readDatabase($filename) {
        // lit la base de données XML des acides aminés 
        $data = implode("",file($filename));
        $parser = xml_parser_create();
        xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
        xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
        xml_parse_into_struct($parser,$data,$values,$tags);
        xml_parser_free($parser);
     
        // boucle à travers les structures
        foreach ($tags as $key=>$val) {
            if ($key == "category_product") {
                $molranges = $val;
                // each contiguous pair of array entries are the 
                // lower and upper range for each molecule definition
                for ($i=0; $i < count($molranges); $i+=2) {
                    $offset = $molranges[$i] + 1;
                    $len = ($molranges[$i + 1] - $offset);
                    $tdb[] = parseMol(array_slice($values, $offset, $len));
                }
            } else {
                continue;
            }
        }
        return $tdb;
    }
     
    function parseMol($mvalues) {
        for ($i=0; $i < count($mvalues); $i++)
            $mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"];
        return new S2MI($mol);
    }
    ?>

  2. #2
    Membre averti Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Points : 356
    Points
    356
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    foreach ($aa as $k=>$v){
       echo $v."<br />";
       $i=0;
       $tab[$i]=$v;
       $i++;
    }
    tu écrases la valeur précédente à chaque tour, vu que tu remets l'indice à 0..

  3. #3
    Membre régulier
    Profil pro
    Responsable de projet
    Inscrit en
    Décembre 2005
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de projet

    Informations forums :
    Inscription : Décembre 2005
    Messages : 97
    Points : 110
    Points
    110
    Par défaut
    Peut on avoir un print_r($aa) et print_r($v)
    histoire de voire ce qu'il y a dedans.

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par iMaTh Voir le message
    Peut on avoir un print_r($aa) et print_r($v)
    histoire de voire ce qu'il y a dedans.
    Voila un exemple de ce que contient print_r($aa) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [id_category] => 19 [category_name] => MD95921 [id_category_parent] => 15 [category_description] => Portable Medion MD95921 [category_full_image] => medion_md95921.jpg [category_publish] => Y [list_order] => 2 [flag_S2MI] => Y )
    Voila un exemple de ce que contient print_r($v) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    19MD9592115Portable Medion MD95921medion_md95921.jpgY2Y
    Merci pour vos réponse en espérant qu'on trouvera une solution.

    Cordialement takepaf

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par alceste Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    foreach ($aa as $k=>$v){
       echo $v."<br />";
       $i=0;
       $tab[$i]=$v;
       $i++;
    }
    tu écrases la valeur précédente à chaque tour, vu que tu remets l'indice à 0..
    Grâce à votre remarque alceste j'ai modifié mon code sa me donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $i=0;
            foreach ($aa as $k=>$v){
    			$tab[$i]=$v;
    			$i++;
    		}
    		return $tab;
    		echo $tab."<br />";
        }
    Maintenant le problème est que mon return $tab ne me retourne pas les valeurs contenu dans $tab quelqu'un à une idée ?

    Cordialement takepaf.

  6. #6
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Pourquoi faire un return avant un echo ?
    Pourquoi seter la valeur $k si tu ne l'utilises pas ?

    De plus je ne comprend pas le but de ce foreach ? Tu ne fais que remplacer les indices de base par des valeurs numériques donc pourquoi ne pas utiliser array_values() ?

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par |PaRa-BoL Voir le message
    Pourquoi faire un return avant un echo ?
    Pourquoi seter la valeur $k si tu ne l'utilises pas ?

    De plus je ne comprend pas le but de ce foreach ? Tu ne fais que remplacer les indices de base par des valeurs numériques donc pourquoi ne pas utiliser array_values() ?
    L'echo sert juste pour voir si mon return me retourne quelque chose. Le but final de ce foreach est de récupéré les valeur contenu dans le fichier xml d'origine pour les mettres dans un tableau, jusque la j'y suis arrivé, mais ensuite je fais un return de mon tableau car je dois l'utiliser dans une autre fonction pour envoyer les informations dans une base de données MySQL.

    Peut tu m'expliquer array_values()?? je ne connais pas dsl.

    Cordialement takepaf.

  8. #8
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Ton echo ne sera pas pris en compte étant donné que "return" cesse toute execution d'une fonction.

    Pour array_value : http://php.net/array_value

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par |PaRa-BoL Voir le message
    Ton echo ne sera pas pris en compte étant donné que "return" cesse toute execution d'une fonction.

    Pour array_value : http://php.net/array_value
    Merci d'avoir répondu aussi rapidement. Je vais voir le lien pour arry_value.

    Cordialement takepaf

  10. #10
    Membre averti Avatar de alceste
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2006
    Messages : 318
    Points : 356
    Points
    356
    Par défaut
    ce n'est pas avec un simple echo que tu vas pouvoir afficher les valeurs, dans les deux cas tu essaies d'imprimer un tableau.. il te faut parcourir ce tableau pour pouvoir imprimer la valeur de ses éléments.

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par alceste Voir le message
    ce n'est pas avec un simple echo que tu vas pouvoir afficher les valeurs, dans les deux cas tu essaies d'imprimer un tableau.. il te faut parcourir ce tableau pour pouvoir imprimer la valeur de ses éléments.
    Re bonjour à tous,

    Même en parcourant mon tableau dans une fonction appelé test qui fonctionne comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function test ($var)
    {
    	for ($y=0;$y<count($var);$y++)
    		{print_r($var[$y]);}
    }
    je fais appel à cette fonction une fois la boucle foreach terminer et que j'ai fais un pour récupérer mon tableau sa ne m'affiche rien alors que si je fais appel à cette fonction dans ma boucle foreach comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach ($aa as $k=>$v){
    			$tab[$i]=$v;
    			test($tab);
    			$i++;
    		}
    j'ai bien les valeur de mon tableau qui s'affiche sur ma page web.
    Quelqu'un c'est pourquoi mon ne fonctionne pas???

Discussions similaires

  1. [Tableaux] tri dans un tableau de variables
    Par astrolane dans le forum Langage
    Réponses: 12
    Dernier message: 15/10/2007, 19h55
  2. Réponses: 5
    Dernier message: 10/08/2007, 14h44
  3. Réponses: 1
    Dernier message: 06/05/2007, 14h34
  4. Réponses: 2
    Dernier message: 23/03/2007, 11h42
  5. Réponses: 3
    Dernier message: 22/03/2007, 13h09

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