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 :

Comment 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 186
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 186
    Par défaut Comment 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 530
    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 530
    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 350
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 350
    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. comment initialiser un array inconnu
    Par giovanni dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 14/02/2019, 10h57
  2. comment changer l'index d'un array
    Par pierrot10 dans le forum Langage
    Réponses: 5
    Dernier message: 27/02/2018, 10h08
  3. [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
  4. Comment déplacé un index de tablespace?
    Par superfly dans le forum Administration
    Réponses: 4
    Dernier message: 10/08/2004, 13h56
  5. Comment récupérer l'index du dernier élément inséré ?
    Par Didier100 dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/07/2004, 22h41

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