Vous n'êtes pas identifié(e).

  • Contributions :
  • Vos boîtes de messages privés sont vides.

Annonce

Participez au Concours Seo 2016 Officiel ! | Faites un bond en avant avec la formation SEO Ranking Skills le 12 Avril 2017

#1 2015-03-19 12:32:14

Mention jeromeweb
Soldier
Lieu : pas loin de paris
Inscription : 2014-10-12
Messages : 973

PHP
Automatisation Web

Recherche dans un tableau

Hello,
J'ai un tableau associatif qui contient url => balise title

Ex :
"1.php" => "bienvenue"
"2.php" => "bienvenue 2"
"3.php" => "bienvenue"
etc....

J'aimerais faire une recherche sur une valeur et que ça me retourne la cle (= je veux toutes les urls qui ont le title "bienvenue") par exemple
Array_search() ne renvoie malheureusement qu'un resultat.
Est ce qqn sait si il y a une fonction PHP native qui renvoie plusieurs résultats et avec le meme fonctionnement (je recherche la valeur et j'obtiens 1 ou +eurs clefs)

Au pire je le fais via des foreach mais le 1er tableau contient des milliers de lignes et le nombre de title peut monter alors ça va faire bcp de traitement

Merci d'avance


Blog perso jeromeweb.net - site pro : jerome-pasquelin.fr

Hors ligne

#2 2015-03-19 12:36:42

Mention Jewem
Scout
Lieu : Grenoble
Inscription : 2014-02-04
Messages : 452

Re : Recherche dans un tableau

function preg_grep_keys($pattern, $input, $flags = 0) {
    return array_intersect_key($input, array_flip(preg_grep($pattern, array_keys($input), $flags)));
}

Ça prend une regex en pattern, ton tableau et te retourne toutes les clés correspondantes... De loin le plus rapide sur de gros tableaux smile

EDIT: Tu as un mail au fait wink

Dernière modification par Jewem (2015-03-19 12:37:08)

Hors ligne

#3 2015-03-19 13:14:15

Mention davidc1
Soldier
Inscription : 2013-09-17
Messages : 929

Re : Recherche dans un tableau

Perso j'ai pas peur du foreach sur des milliers de lignes.

Pour des millions : grep...

Hors ligne

#4 2015-03-19 16:47:49

Mention jeromeweb
Soldier
Lieu : pas loin de paris
Inscription : 2014-10-12
Messages : 973

PHP
Automatisation Web

Re : Recherche dans un tableau

Jewem a écrit :

function preg_grep_keys($pattern, $input, $flags = 0) {
    return array_intersect_key($input, array_flip(preg_grep($pattern, array_keys($input), $flags)));
}

Ça prend une regex en pattern, ton tableau et te retourne toutes les clés correspondantes... De loin le plus rapide sur de gros tableaux smile

EDIT: Tu as un mail au fait wink

Super merci je vais tester ça (je deteste les regex big_smile)

J'ai répondu en début d'apres midi à ton email, non? tu es VIP normalement ^^


Blog perso jeromeweb.net - site pro : jerome-pasquelin.fr

Hors ligne

#5 2015-03-19 16:49:27

Mention jeromeweb
Soldier
Lieu : pas loin de paris
Inscription : 2014-10-12
Messages : 973

PHP
Automatisation Web

Re : Recherche dans un tableau

davidc1 a écrit :

Perso j'ai pas peur du foreach sur des milliers de lignes.
Pour des millions : grep...

Il faut juste rallonger le timeout du script qd il y a beaucoup de lignes big_smile


Blog perso jeromeweb.net - site pro : jerome-pasquelin.fr

Hors ligne

#6 2015-03-19 16:55:18

Mention jeromeweb
Soldier
Lieu : pas loin de paris
Inscription : 2014-10-12
Messages : 973

PHP
Automatisation Web

Re : Recherche dans un tableau

Tu a un sacrée niveau quand meme Jewem pour imbriquer 4 fonctions comme ça!


Blog perso jeromeweb.net - site pro : jerome-pasquelin.fr

Hors ligne

Pied de page des forums