Partage
  • Partager sur Facebook
  • Partager sur Twitter

[PHP] Recherche multiple dans un tableau deux dime

Problème de recherche

Sujet résolu
    23 janvier 2020 à 12:02:44

    Bonjour,

    Je voudrais pouvoir faire des recherches variable dans un tableau deux dimensions.
    je m'explique.

    J'ai un tableau dans cette forme:

    <?php
      $table = array(
            0 => array("nom" => "marc", "prenom", "jule", "age" => "23", "id" => "W24"),
            1 => array("nom" => "stephane", "prenom", "paul", "age" => "25", "id" => "W25"),
            2 => array("nom" => "loic", "prenom", "julie", "age" => "21", "id" => "W26"),
            3 => array("nom" => "mathieu", "prenom", "sarah", "age" => "23", "id" => "W27"),
            4 => array("nom" => "luc", "prenom", "audrey", "age" => "25", "id" => "W28"),
            5 => array("nom" => "loic", "prenom", "jule", "age" => "23", "id" => "W29")
      );
    ?>

    J'ai également un formulaire de recherche qui fonctionne avec la méthode post.

    <form method="POST">
      <input type="text" name="nom" />
    <input type="text" name="prenom" />
    <input type="text" name="age" />
    <input type="text" name="ref" />
    </form>

    dans ce style là.

    Par exemple si je fait une recherche sur l'age, j'aimerais qu'il me donnent l'id des tableau correspondant.

    dans un premier temps je me suis dis que je pourrais créer une autre variable avec une recherche avec array_search
    mais après multiple test je n'y suis pas arrivé

    Voici un petit test que j'ai effectué mais sans succès..

    <?php
    $table = array(
            0 => array("nom" => "marc", "prenom", "jule", "age" => "23", "id" => "W24"),
            1 => array("nom" => "stephane", "prenom", "paul", "age" => "25", "id" => "W25"),
            2 => array("nom" => "loic", "prenom", "julie", "age" => "21", "id" => "W26"),
            3 => array("nom" => "mathieu", "prenom", "sarah", "age" => "23", "id" => "W27"),
            4 => array("nom" => "luc", "prenom", "audrey", "age" => "25", "id" => "W28"),
            5 => array("nom" => "loic", "prenom", "jule", "age" => "23", "id" => "W29")
          );
     
          foreach ($table as $key => $value) {
            $table_schearch[] = array_search("marc", array_column($table[$key], 'nom'));
            $table_schearch[] = array_search("25", array_column($table[$key], 'age'));
            $table_schearch[] = array_search("stephane", array_column($table[$key], 'nom'));
          }
          $table_schearch = array_unique($table_schearch);
          debug($table);
          debug($table_schearch);
    ?>


    Auriez vous une solution plus simple et plus efficaces ?
    en sachant que dans mon véritable tableau j'ai une histoire de 50 recherches différente possible.

    Merci d'avance

    Edit

    Sujet résolut

    Pour ceux a qui ça intéresse voici un code qu'on m'a confier qui correspond parfaitement a ma demande (a adapté bien évidement) 

    <?php
    
    $table = array(
        0 => array("nom" => "marc", "prenom" => "jule", "age" => "23", "id" => "W24"),
        1 => array("nom" => "stephane", "prenom" => "paul", "age" => "25", "id" => "W25"),
        2 => array("nom" => "loic", "prenom" => "julie",  "age" => "21", "id" => "W26"),
        3 => array("nom" => "mathieu", "prenom" => "sarah", "age" => "23", "id" => "W27"),
        4 => array("nom" => "luc", "prenom" => "audrey", "age" => "25", "id" => "W28"),
        5 => array("nom" => "loic", "prenom" => "jule", "age" => "23", "id" => "W29")
    );
     
    $search_ids = function(array $search) use ($table): array {
        $ids = [];
        $nb  = count($search);
        foreach ($table as $k => $v) {
            if (count(array_intersect_assoc($v, $search)) === $nb) {
                $ids[] = $k;
            }
        }
        return $ids;
    };
     
    $s1 = $search_ids(['nom' => 'marc']);
    $s2 = $search_ids(['prenom' => 'jule']);
    $s3 = $search_ids(['prenom' => 'jule', 'age' => '23']);
    $s4 = $search_ids(['prenom' => 'jule', 'age' => '23', 'id' => 'W29']);

    -
    Edité par adiancecraftMeongames 23 janvier 2020 à 12:39:06

    • Partager sur Facebook
    • Partager sur Twitter

    [PHP] Recherche multiple dans un tableau deux dime

    × 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