[résolut] Rechercher dans un tableau une valeur

Eléphanteau du PHP | 14 Messages

13 oct. 2011, 17:46

Bonjour à tous,

Je cherche à réalisé une fonction qui me permettrai de chercher dans un tableau (assez gros et pas strictement égale) la valeur d'une clé

Code : Tout sélectionner

Array ( [cx_4e96fc87ef67e] => Array ( [pseudo] => le-codeur-fou [url] => http://kristof.123.fr/ [titre] => Page introuvable [ip] => 54.11.1.150 [time] => 1318518326 ) [cx_4e69fc81ef61e] => Array ( [pseudo] => DevPHP [url] => http://kristof.123.fr/ [titre] => Formulaire de contact [ip] => 84.41.84.150 [time] => 1318518394 ) )
La valeur que je recherche ici est le pseudo, donc

Code : Tout sélectionner

[cx_4e96fc87ef67e] [pseudo] = le-codeur-fou
Je sais déjà comment il s'appel, je dois juste vérifié qu'il est dans mon tableau (en extra, la clé pour avoir les infos)
Modifié en dernier par DevPHP le 13 oct. 2011, 20:14, modifié 1 fois.

ViPHP
AB
ViPHP | 5818 Messages

13 oct. 2011, 17:58

Tu peux faire une boucle sur ton tableau et pour chaque élément (qui est un tableau) tu peux appliquer la fonction in_array
$recherche = 'le-codeur-fou';
$result = false;

foreach ($tab as $array) 
{
    if (in_array($recherche,$array)) 
      {
        $result=true;
        break;
      }
}

echo $result;

Eléphanteau du PHP | 14 Messages

13 oct. 2011, 18:26

Pour la charge sur un tableau assez gros, ça irai ?
Il va devoir le faire très suivant :|

ViPHP
ViPHP | 5462 Messages

13 oct. 2011, 18:39

d’où sort le tableau ?

Eléphanteau du PHP | 14 Messages

13 oct. 2011, 19:23

d'un serialize situé sur un fichier texte (chargé une fois :P )
La taille change régulièrement selon la fréquentation

Eléphant du PHP | 190 Messages

13 oct. 2011, 19:44

Une idée au cas ou...

D'après ce que tu dis, tu sais déjà comment il s’appelle, et tu dois juste vérifier qu'il est présent dans le tableau. Dans ce cas pourquoi ne pas faire la recherche directement sur le serialize en mode string ?

Eléphanteau du PHP | 14 Messages

13 oct. 2011, 20:14

Pas bête, un truc a ajouter dans mon système de cache...
Merci, bon pour l'histoire de connaitre la clé, je ne serai pas aussi facilement.

Pour ceux qui veulent faire comme moi strstr <- le nom est top hein ?

ViPHP
AB
ViPHP | 5818 Messages

13 oct. 2011, 20:28

Comme indiqué dans la doc il est dans ce cas conseillé d'utiliser strpos qui sera plus rapide.

Sinon elle est de quel ordre la taille de ton tableau ?

Eléphanteau du PHP | 14 Messages

13 oct. 2011, 23:15

Très variable, en journée dans les 250ko en soiré quelque ko a peine dans mon tableau se trouve, la page d'ou il vient, son ip et un timestamp sur 5 minutes.
Le truc, c'est que des fois le fichier est très gros (2 mo environs), donc imaginons, que je cherche 15 personne pour savoir si ils sont la, avec 2 000 visiteurs sur la même page 2 000 * 15 = 30 000 recherches, ça deviens lourd comme requête... Maintenant, comme c'est très varié je pense qu'avec une recherche strpos, ça devrai le faire.
J’espère pouvoir optimisé cela.

Bon en y réfléchissant, tout cela n'est pas obligatoire et dans le cas ou le site ramerai, je n'aurai cas retirer.