Partage
  • Partager sur Facebook
  • Partager sur Twitter

Array_search() sur tableau 2 dimensions

Comment faire ? ...

    13 juin 2008 à 18:43:41

    Bonjour bonjour,

    J'ai un problème.... J'ai ca d'un coté :
    <?php 
    $mod_dep_over = array(
    "mai0aa.01" => array("Initialisation", "INIDIR", "MMC"), 
    "mai0ab.11" => array("MMC3", "CONFIG_INI"));
    ?>
    

    (c'est de la Poo normalement mais j'ai simplifié pour les (rares) réfractaires :-° )
    Et je voudrai utiliser Array_search comme ca :
    <?php
    Array_search("Initialisation", $mod_dep_over);
    ?>
    


    Pour que ça me renvois "mai0aa.01". Sauf que évidemment, j'utilise un double tableau, et je ne peux pas faire ça comme ça... Quelqun a une idée ? :euh:

    Marchi a vous :p

    EDIT 1 : Bien, apparemment personne ne sais, je viens de peaufiner ma recherche...

    Pour que le résultat sois parfaitement envoyé il faux que la fonction ai l'array complet, c'est à dire dans mon cas au dessus cela :
    <?php
    Array_search(array("Initialisation", "INIDIR", "MMC"), $mod_dep_over);
    ?>
    


    Or ne disposant pas de cette valeur il m'est impossible de réaliser cette action...

    Je continue à réfléchir...

    EDIT 2 : Bon toujours pas :'(

    J'ai cependant deux méthodes... mais peut ortodoxes...
    1 : Passer en tableau simple a double numérotation :
    <?php 
    $mod_dep_over = array(
    "mai0aa.01-1" => "Initialisation", 
    "mai0aa.01-2" => "INIDIR", 
    "mai0aa.01-3" => "MMC", 
    "mai0ab.11-1" => "MMC3",
    "mai0ab.11-2" => "CONFIG_INI");
    
    // Je récupére la valeur "mai0aa.01-1"
    $nom_code = Array_search("Initialisation", $mod_dep_over);
    
    // Ensuite je fais un explode du signe "-"
    $explode_nom_code = explode("-", $nom_code);
    // Puis je prend l'offset 0 du retour de l'explode
    $nom_code_reel = $explode_nom_code[0] ;
    ?>
    


    2 : Utiliser deux tableaux différents utilisant l'offset pour les joindres :
    (Seul probème, la redondance d'information dans $mod_dep_over_nom)
    <?php 
    $mod_dep_over_nom = 
    array("mai0aa.01", "mai0aa.01", "mai0aa.01", "mai0ab.11", "mai0ab.11");
    
    $mod_dep_over_valeurs = 
    array("Initialisation", "INIDIR", "MMC", "MMC3","CONFIG_INI");
    
    // Je récupére la valeur de l'offset de la valeur dans $mod_dep_over_valeurs
    $num_offset = Array_search("Initialisation", $mod_dep_over_valeurs);
    
    // Ensuite je prend la valeur de l'autre tableau pour le même offset
    $nom_code_reel = $mod_dep_over_nom[$num_offset];
    ?>
    


    Personellement je trouve cette méthode un peut *bourrin* :p mais en tout cas ca marche... Voila, si je trouve quelquechose de plus simple avec d'autres fonctions, je reposte
    • Partager sur Facebook
    • Partager sur Twitter
      24 juillet 2009 à 16:26:32

      Je cherche actuellement une fonction identique, as-tu trouvé ?
      • Partager sur Facebook
      • Partager sur Twitter
        24 juillet 2009 à 17:03:54

        C'est un peut tirer par les cheveux, mais un autre zéro trouvera certainement plus simple:
        <?php
        $cherche = 'Initialisation';
        
        $mod_dep_over = array(
         "mai0aa.01" => array("Initialisation", "INIDIR", "MMC"), 
         "mai0ab.11" => array("MMC3", "CONFIG_INI")
        );
        $cles = array_keys($mod_dep_over);
        $find = '';
        foreach($cles as $index){
         if(in_array($cherche, $mod_dep_over[$index])){
          $find = $index;
          break;
         }
        }
        if(empty($find))
         echo 'Non trouvé';
        else
         echo $find;
        
        // Affiche: mai0aa.01 (dans cette exemple)
        ?>
        
        • Partager sur Facebook
        • Partager sur Twitter
        Erreur PDO - Installation Wamp - Docs PHP et MYSQL.
          24 juillet 2009 à 17:28:27

          J'ai trouvé sur CCM:
          function searchArray($table, $val)
          	{
          		foreach ($table as $key => $row)
          		{
          			if ($row['id'] == $val)
          				return $key;
          		} 
          		
          		return -1;
          	}
          

          J'ai adapté à mon code mais c'est ce principe.
          • Partager sur Facebook
          • Partager sur Twitter
            24 juillet 2009 à 18:03:05

            Ou alors, doc. php, contributeurs:
            http://fr.php.net/array_search
            Tout en bas:
            <?php
            function recursive_array_search($needle,$haystack) {
                foreach($haystack as $key=>$value) {
                    $current_key=$key;
                    if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
                        return $current_key;
                    }
                }
                return false;
            }
            ?>
            
            • Partager sur Facebook
            • Partager sur Twitter
              24 juillet 2009 à 18:41:07

              Ha oui, j'avais pas vu...
              Merci ;)
              • Partager sur Facebook
              • Partager sur Twitter

              Array_search() sur tableau 2 dimensions

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown