Rechercher 2 valeurs dans un tableau, retourner la ligne

zory -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je cherche a renvoyer la ligne complète d'un tableau a deux dimensions qui contiendrait deux valeurs.

Par exemple :

Idu idr idt vitesse temps
1 2 2 12 55
2 2 5 135 27
3 2 7 1 22

comment renvoyer la position de la ligne répondant aux critères idr =2 et idt =5 ?

Array search ne fonctionne que sur 1 dimenssion d'après cce que j'ai compris
Merci de votre aide

5 réponses

  1. DelNC Messages postés 2360 Statut Membre 2 010
     
    Bonjour

    Si tu ne veux afficher que le numéro de la ligne voilà comment il faut faire

    SELECT Idu
    FROM  ta_table
    WHERE idr = 2
    AND   idt = 5;
    0
  2. zory
     
    Bonsoir,

    non ne je cherche pas a faire une requête sql, je cherche à identifier la ligne qui match avec deux valeurs...
    0
  3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,

    Un truc du genre devrait te convenir je pense :
    https://stackoverflow.com/questions/8102221/php-multidimensional-array-searching-find-key-by-specific-value

    
    class Stdlib_Array
    {
        public static function multiSearch(array $array, array $pairs)
        {
            $found = array();
            foreach ($array as $aKey => $aVal) {
                $coincidences = 0;
                foreach ($pairs as $pKey => $pVal) {
                    if (array_key_exists($pKey, $aVal) && $aVal[$pKey] == $pVal) {
                        $coincidences++;
                    }
                }
                if ($coincidences == count($pairs)) {
                    $found[$aKey] = $aVal;
                }
            }
    
            return $found;
        }    
    }
    
    // Example:
    
    $data = array(
        array('foo' => 'test4', 'bar' => 'baz'),
        array('foo' => 'test',  'bar' => 'baz'),
        array('foo' => 'test1', 'bar' => 'baz3'),
        array('foo' => 'test',  'bar' => 'baz'),
        array('foo' => 'test',  'bar' => 'baz4'),
        array('foo' => 'test4', 'bar' => 'baz1'),
        array('foo' => 'test',  'bar' => 'baz1'),
        array('foo' => 'test3', 'bar' => 'baz2'),
        array('foo' => 'test',  'bar' => 'baz'),
        array('foo' => 'test',  'bar' => 'baz'),
        array('foo' => 'test4', 'bar' => 'baz1')
    );
    
    $result = Stdlib_Array::multiSearch($data, array('foo' => 'test4', 'bar' => 'baz1'));
    
    var_dump($result);
    

    0
  4. zory
     
    Ca me parrait pas mal mais j'ai une erreur étrange :
    Warning: array_key_exists() expects parameter 2 to be array, string given


    Le tableau que je transmets est le résultat d'une requête PDO
     $rowtotalstats = $stmttotalstats->fetch(PDO::FETCH_BOTH);

    Vous avez une idée ?
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      Fais donc un FETCH_ASSOC uniquement, ça devrait être mieux
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Mais bon .. pourquoi faire la recherche dans l'array .. si celui-ci provient d'une requête .. autant faire comme te l'a proposé DelNc
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. zory
     
    Jordane45,
    c'est pour organiser mes données, c'est en lien avec cette question auquelle tu m'as aidé :

    https://forums.commentcamarche.net/forum/affich-34253754-aide-pour-structurer-requette-sql

    Je n'arrive pas m'en sortir
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      ....
      As tu essayé de manipuler ton array de sorti pour le mettre dans la forme souhaitée ??? (comme indiqué ici : https://forums.commentcamarche.net/forum/affich-34253754-aide-pour-structurer-requette-sql#6 )
      A l'aide d'une ou deux boucles imbriquées... ça ne devrait pas être trop compliqué ....

      Quoi qu'il en soit .. je ne vois pas le rapport entre le fait de filtrer sur deux données d'un array et ta question qui concernait la "mise en forme" d'une requête....
      0