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 :

array_push bug


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 477
    Points : 4 688
    Points
    4 688
    Par défaut array_push bug
    Bonjour tout le monde,

    la semaine derniere, j'ai utilise la fonction array_push()... tout fonctionnait..
    ce matin, pour optimiser mon code, j'ai retravaille sur la partie qui utilise cette fonction... mais a ma grande surprise... ca n'affichait plus rien..
    j'ai alors fait un prin_r() pour me rendre compte que en fait, je me retrouvais avec le nombre d'indexes de mon array final [edit] : apres calcul mental (piouf) non... meme pas le nombre d'indexes
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function return_info_building($type)
    {
        $resources=return_building_resources($type);
        $description=return_building_description($type);
                        //18 type
        $toto=array_push($resources, $description[0], $description[1], $description[2], $description[3], $description[4]);
        //$toto=array_push($resources, "test");
        print_r($toto);//ne pretez pas attention a $toto... c'etait pour etre sur =)
    }
    => $resources est bien un array (de 17 partant de zero) avec le bon contenu
    => description est aussi un array (de 5 partant de zero) avec le bon contenu

    $toto=array_push($resources, "test"); => affiche 19
    $toto=array_push($resources, $description[0], $description[1], $description[2], $description[3], $description[4]); => affiche 23

    j'avoue que la, ca me depasse....

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    description est aussi un array (de 4 partant de zero) avec le bon contenu
    donc $description[4] n'existe pas

  3. #3
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 477
    Points : 4 688
    Points
    4 688
    Par défaut
    5 partant de zero, pardon...
    mais de toute facon, pourquoi meme

    $toto=array_push($resources, "test");

    ne fonctionne pas ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Chez moi en tout cas tout va bien, tu es sur que ton tableau de départ à 17 élements et non pas plutot qu'il va de 0 à 17 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $resources = range(0,16);
    echo array_push($resources,"test");
    //18

  5. #5
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 477
    Points : 4 688
    Points
    4 688
    Par défaut
    mais que mon array fasse 1 ou 18, c'est pas le probleme, le probleme c'est que je n'arrive plus a acceder aux elements du tableau apres l'array_push

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourrais-tu décrire un peu mieux ton problème alors ?
    Tout ce que tu indiques c'est un problème de nombre d'élément.

  7. #7
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 477
    Points : 4 688
    Points
    4 688
    Par défaut
    $resources=return_building_resources($type);
    $description=return_building_description($type);
    $toto=array_push($resources, $description[0], $description[1], $description[2], $description[3], $description[4]);

    print_r($resources) = Array ( [0] => 0 [1] => 0 [2] => 20 [3] => 0 [4] => 10 [5] => 10 [6] => 20 [7] => 1 [8] => 55 [9] => 55 [10] => 55 [11] => 55 [12] => 55 [13] => 55 [14] => 55 [15] => 55 [16] => 5000 [17] => 15 )
    print_r($description) = Array ( [0] => 1 [1] => /images/buildings/b_1.png [2] => my_building [3] => my_description. [4] => 2000 )

    print_r($toto) = 23

    23 ?!?!? wth ?
    echo $toto[0] = rien

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    array_push() retourne le nombre d'elements.
    Ton tableau final c'est $resources.

  9. #9
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour, array_push ne retourne pas un tableau mais le nombre d'éléments

    Retourne le nouveau nombre d'éléments dans le tableau.
    EDIT: grillé.

    Ce que tu souhaites récupérer c'est en effet $ressources.
    C'est une fonction qui agit comme sort par exemple.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $a = array(2, 4, 1);
     
    $b = sort($a);
     
    print_r($b);
    // affiche 1

  10. #10
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 477
    Points : 4 688
    Points
    4 688
    Par défaut
    OMG ! j'ai honte...

    merci encore... ca faisait des heures que je cherchait le probleme...>_<

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/03/2003, 17h37
  2. Bug new build ??
    Par rgarnier dans le forum XMLRAD
    Réponses: 4
    Dernier message: 31/01/2003, 11h30

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