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 :

Initialiser l'index d'array multiple


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 196
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 196
    Par défaut Initialiser l'index d'array multiple
    Bonjour à tous

    J'extrait des données d'une base de données concernant différents paramètres de stations et de ses capteurs.

    Voici un extrait incomplet, mais suffisant pour expliquer mon problème

    Code php : 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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    Array
    (
        [response] => 200
        [method] => GET
        [id_field] => 0
        [settings] => Array
            (
                [1] => Array
                    (
                        [id_station_type] => 1
                        [stations_type_name] => Gel de printemps
                        [stations_type_awe] => snowflake
                        [field_data] => Array
                            (
                                [1] => Array
                                    (
                                        [id_field] => 1
                                        [field_name] => Printaniere
                                        [station_data] => Array
                                            (
                                                [2] => Array
                                                    (
                                                        [id_station] => 2
                                                        [station_name] => st-2
                                                        [sensors_data] => Array
                                                            (
                                                                [15] => Array
                                                                    (
                                                                        [id_sensor] => 15
                                                                    )
     
                                                                [8] => Array
                                                                    (
                                                                        [id_sensor] => 8
                                                                    )
     
                                                                [5] => Array
                                                                    (
                                                                        [id_sensor] => 5
                                                                    )
     
                                                            )
     
                                                    )
     
                                                [6] => Array
                                                    (
                                                        [id_station] => 6
                                                        [station_name] => st-6
                                                        [sensors_data] => Array
                                                            (
                                                                [25] => Array
                                                                    (
                                                                        [id_sensor] => 25
                                                                    )
     
                                                                [29] => Array
                                                                    (
                                                                        [id_sensor] => 29
                                                                    )
     
                                                                [28] => Array
                                                                    (
                                                                        [id_sensor] => 28
                                                                    )
     
                                                            )
     
                                                    )
     
                                            )
     
                                    )
     
                                [2] => Array
                                    (
                                        [id_field] => 2

    Voux voyiez que l'index de chaque array ne commence pas par zéro et ne sont pas incémenté. Un bel exemple ici
    Code PHP : 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
    [sensors_data] => Array
                                                            (
                                                                [25] => Array
                                                                    (
                                                                        [id_sensor] => 25
                                                                    )
     
                                                                [29] => Array
                                                                    (
                                                                        [id_sensor] => 29
                                                                    )
     
                                                                [28] => Array
                                                                    (
                                                                        [id_sensor] => 28
                                                                    )

    ces index erronnés, correspondent au ID, des terrains, des stations et des sondes....

    J'arrive corriger ceci comme ceci

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $dataset['settings'] = array_values($dataset['settings']);

    Simplement, je ne suis pas certains que array_value() soit la fonction la plus adéquate, mais surtout qu'elle ne corrige pas les array enfant.

    Y-aurait-il une solution simple pour "réseter" les index de 0 à x?
    Ou devrais-je le faire manuellement en parcourant mon array?

    Milles mercis pour vos lumières

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 533
    Par défaut
    Bonjour,

    Normalement vous utilisez une boucle et un tableau pour récupérer les données en PHP, non ?

    Il faudrait donc savoir pourquoi les indexes ne s'ajoutent pas d'une façon normale (0,1,2,3...) au lieu d'essayer de dépanner le résultat actuel.

    Montrez comment vous récupérez les données pour voir la source du problème.

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 352
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 352
    Billets dans le blog
    17
    Par défaut
    À un moment tu dois faire :

    $data['sensors_data'][$id_sensor] = ['id_sensor' => $id_sensor];

    Alors qu'il faudrait faire :

    $data['sensors_data'][] = ['id_sensor' => $id_sensor];

    Comme dit Toufik83, montre ton code
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

Discussions similaires

  1. [MySQL] Comment contruire un array multiple
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 02/11/2010, 22h19
  2. Doctrine:Data-Load avec initialisation des index
    Par erictomcat dans le forum ORM
    Réponses: 4
    Dernier message: 07/07/2010, 17h23
  3. initialisation d'un cell array of string
    Par tubaas dans le forum MATLAB
    Réponses: 2
    Dernier message: 02/02/2010, 09h37
  4. Indexer un array par nom
    Par olibara dans le forum C#
    Réponses: 12
    Dernier message: 09/03/2009, 17h59
  5. [PHP/SQL] foreach sur array multiples
    Par Flushovsky dans le forum Langage
    Réponses: 1
    Dernier message: 18/09/2006, 10h49

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