Rechercher 2 valeurs dans un tableau, retourner la ligne

zory -  
yg_be Messages postés 24281 Statut Contributeur -
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

A voir également:

5 réponses

DelNC Messages postés 2360 Statut Membre 2 005
 
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
zory
 
Bonsoir,

non ne je cherche pas a faire une requête sql, je cherche à identifier la ligne qui match avec deux valeurs...
0
jordane45 Messages postés 40050 Statut Modérateur 4 757
 
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
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
jordane45 Messages postés 40050 Statut Modérateur 4 757
 
Fais donc un FETCH_ASSOC uniquement, ça devrait être mieux
0
jordane45 Messages postés 40050 Statut Modérateur 4 757 > jordane45 Messages postés 40050 Statut Modérateur
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
jordane45 Messages postés 40050 Statut Modérateur 4 757
 
....
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
yg_be Messages postés 24281 Statut Contributeur 1 584
 
j'ai ajouté une suggestion en réponse à l'autre question
https://forums.commentcamarche.net/forum/affich-34253754-aide-pour-structurer-requette-sql#7
0