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] key et valeur dans un tableau


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Par défaut [Tableaux] key et valeur dans un tableau
    bonjour a tous.

    voici mon souci.
    connaissant une valeur dans un tableau avec (array_search) on peux retrouver la clé associée. mais comment faire l'inverse retrouvér une valeur quand on connait la clé, et mettre cette valeur dans une variable.

    j'avoue je suis un peu perdu.

    exemple un tableau (tableau.txt) contenant le séparateur virgule "," j'ai :

    ,10,20,50,31,17,25,34,48

    connaissant une clé par exemple $key = "5"; qui est associé a 17 dans le tableau

    on connait la clé c'est 5, mais on ne connais pas la valeur associé qui est ici 17 dans ce tableau

    je voudrai donc retrouver cette valeur, en l'occurence (17) et la mettre dans une variable.

    comment faire? avec quel fonction? un petit exemple me serai bien utile.

    merci

  2. #2
    Membre chevronné
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Par défaut
    Citation Envoyé par kendot Voir le message
    exemple un tableau (tableau.txt) contenant le séparateur virgule "," j'ai :
    ,10,20,50,31,17,25,34,48
    tableau.txt ???

    Citation Envoyé par kendot Voir le message
    connaissant une clé par exemple $key = "5"; qui est associé a 17 dans le tableau

    on connait la clé c'est 5, mais on ne connais pas la valeur associé qui est ici 17 dans ce tableau

    je voudrai donc retrouver cette valeur, en l'occurence (17) et la mettre dans une variable.

    comment faire? avec quel fonction? un petit exemple me serai bien utile.
    merci
    si c'est simplement retrouver la valeur à partir de la clé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $mon_array = array(1,2,3);
    $ma_variable = $mon_array[2];
    echo $ma_variable; //affiche 3

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Par défaut
    merci ampil, lol


    c'est tout a fais cela,

    je vais maintenant pouvoir avancer dans mon code,


    j'étais vraiment bloqué pour un truc simple en faite.

    encore merci a vous.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Par défaut
    voici un petit exemple de mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $key = "5";
     
    $fichier=fopen("tableau.txt","r");
    $tableau=fread($fichier, filesize("tableau.txt"));
    fclose($fichier);
     
    $mon_tableau = explode(",", $tableau);
     
    $code = $mon_tableau[$key];
     
     
    print $code;


    en faite $key aurra une valeur entrer dans un champ de formulaire


    et $code sera utilisé a ma guise, et même utilisé pour changer cette valeur dans mon tableau.

    encore merci surtout pour la rapidité de votre réponse.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonjour,
    comme savez-vous que l'index 5 revoit à 17 et pas l'inverse?

    Ce qui m'inquiète encore plus c'est votre façon de séparer les valeurs de votre tableau par des virgules. Ne commencez jamais par une virgule, utilisez plutôt le ';' que la ',' cela sera moins problématique.

    Code fichier.txt : Sélectionner tout - Visualiser dans une fenêtre à part
    7;15;78;132;45;1;96;45;26;77;7;11;335;555;155;152;

    Code tableau.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
    <?php
     
      $chaine = file_get_contents('fichier.txt');
      $chaine = substr($chaine, 0, strlen($chaine)-1);
     
      $tableau = explode(';', $chaine);
     
      // ensuite, comme l'a dit Gats
     
      echo $tableau[5]."<br />\n"; // retourne 1
     
      // pour trouver l'index quand vous avez la valeur (unique ou première)
     
      echo array_search(1, $tableau)."<br />\n"; // retourne 5
     
      // s'il y a plusieurs valeurs possibles
     
      echo "<pre>\n";
      print_r(array_keys($tableau, 7));
      echo '</pre>';
     
      // retourne 0 et 10
     
    ?>

    Cordialement,
    DaRiaN.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Par défaut
    le ";" a la place de la "," oui surment je n'ai pas planché la dessus pour moi cela foctionnne bien avec la "," .

    pour le faite de commencer mon tableau par le séparateur plutôt que par la valeur, cela me permet d'échapper l'occurence 0 de $key.

    pour un tableau:

    5;48;65;14;12;3;75;254;18;396;2

    $key = "0"; trouvera 5
    et
    $key = "7"; trouvera 254

    alors que pour un tableau:

    ;5;48;65;14;12;3;75;254;18;396;2

    5 sera trouvé par $key = "1";
    et
    254 sera trouvé par $key = "8";

    cela ne change rien dans la façon du traitement puisque ceci et un code perso qui ne sera pas diffusé.
    mais qui est beaucoup plus pratique pour moi lors de la création automatique d'un tableau, en faisant systématiquement

    fwrite($fichier,";".$code);

    alors que avec un tableau:

    5;48;65;14;12;3;75;254;18;396;2

    j'aurrai un probleme a la création automatique, devant faire un:

    fwrite($fichier,$code);

    la premiere fois et:

    fwrite($fichier,";".$code);

    fwrite($fichier,";");
    fwrite($fichier,$code);

    les fois suivantes
    cette façon de faire est assé personel j'en convient mais très pratique pour moi.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Par défaut
    Par contre j'ai autre souci.


    car une fois que je posséde ma valeur retourné dans ma variable $code, si je veux remplacer cette valeur dans mon tableau.

    tableau.txt:
    ,344,450,125,75,10,10,20

    si : $key = "2"
    $code = "450"
    et : $newcode = "130"

    $mon_tableau=str_replace($code, $newcode, $mon_tableau);

    mon nouveau tableau sera:
    ,344,130,125,75,10,10,20

    jusque la pas de probléme, mais

    si : $key ="5"
    $code = "10"
    et : $newcode = "130"

    mon nouveau tableau sera:
    ,344,450,125,75,130,130,20

    les deux valeur 10 seront remplacé par la newvaleur 130, alors que je ne voudrai changer que une seule de ces valeur en l'occurence celle que j'envoi par $key.

    $key = "5";
    $code = "10";
    $newcode = "130";

    mon tableau qui est:
    ,344,450,125,75,10,10,20

    en utilisant str_replace()

    je voudrai mon new tableau :
    ,344,450,125,75,130,10,20

    alors qu'il est
    ,344,450,125,75,130,130,20

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Vous pensez "chaine de caractère" alors que vous travailler avec un tableau.

    Code tableau.php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
      $chaine = file_get_contents('fichier.txt');
      $chaine = substr($chaine, 0, strlen($chaine)-1);
     
      $tableau = explode(';', $chaine);
     
      $tableau[0] = 999;
     
      echo "<pre>\n";
      print_r($tableau);
      echo '</pre>';
     
    ?>

    Grace à "$tableau[0] = 999;", je remplace la valeur de l'index 0 par 999.

  9. #9
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par kendot Voir le message
    le ";" a la place de la "," oui surment je n'ai pas planché la dessus pour moi cela foctionnne bien avec la "," .

    pour le faite de commencer mon tableau par le séparateur plutôt que par la valeur, cela me permet d'échapper l'occurence 0 de $key.

    pour un tableau:

    5;48;65;14;12;3;75;254;18;396;2

    $key = "0"; trouvera 5
    et
    $key = "7"; trouvera 254
    J'ai bien lu que tu n'étais pas informaticien (quoique je préciserais plutôt développeur), mais comme tu sembles volontaire pour te mettre à la prog, autant en accepter les conventions pour faire du code compréhensible par le plus grand nombre.
    Les tableaux de base 0 en sont une. Il est vrai que cela peut dérouter au début, mais ça deviendra vite un automatisme pour toi, et c'est beaucoup moins source d'erreur que de commencer ton fichier par un séparateur.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 36
    Par défaut
    merci ( jml94 ) pour ton conseil judicieux j'en prends bonne note.

    mais en faite apres avoir réfléchi un peu à cette façon que j'ai de faire, pas très catholique, j'en conviens, suite a ce que ( DaRiaN ) a dit, bon pour le ";" à la place de "," je vais rectifier, mais pour le faite de commencer par le séparateur au lieu d'une valeur, pas de problème car en faite cela me donne une valeur ( null = "0" ) en position "0", donc je ne pense pas que cela me pose un problème! mais bon...............
    toute critique est bonne à prendre, et sert à réfléchir et à se poser des questions à soi-même.

    Et toutes questions posées sans réponse permet de chercher à évoluer par soi-même.

    donc merci.

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

Discussions similaires

  1. [Tableaux] retrouver une valeur dans un tableau
    Par tininou dans le forum Langage
    Réponses: 3
    Dernier message: 26/01/2007, 23h04
  2. Réponses: 6
    Dernier message: 26/12/2006, 18h01
  3. [Tableaux] Problème de valeur dans un tableau (array)
    Par Flushovsky dans le forum Langage
    Réponses: 15
    Dernier message: 24/03/2006, 14h56
  4. [Tableaux] Extraction de valeur dans un tableau
    Par pirouette_07 dans le forum Langage
    Réponses: 6
    Dernier message: 21/10/2005, 18h54
  5. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 14h41

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