IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Extraction de données dans 'array'


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Points : 8
    Points
    8
    Par défaut [Tableaux] Extraction de données dans 'array'
    Bonjour tout le monde,

    Je me retrouve en ce moment face à un problème auquel je ne trouve pas de solution...

    J'ai rangé dans un array tous les fichiers contenus dans un dossier (ça, ça marche).
    Je voudrais maintenant lister, à partir de cet array, tous les fichiers commençant par le même nom. Je m'explique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => 5.jpg [1] => index.htm [2] => 5.wmv [3] => 3.jpg [4] => 5.flv [5] => 3.wmv )
    et bien je voudrais lister toutes les entrées commençant par "5" --> et sortir 5.jpg, 5.wmv, et 5.flv

    je ne sais pas quelle fonction utiliser : in_array, search_array, array_key_exist, ... bref, je ne sais pas comment faire...

    si quelqu'un avait une solution pour moi, je lui en serai reconnaissant !
    merci

    bon dimanche à tous !

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $array = array('5.jpg', 'index.htm', '5.wmv', '3.jpg', '5.flv', '3.wmv');
    $new_array = array_filter($array, create_function('$elt', 'return strpos($elt, "5") === 0;'));
    print_r($new_array);
    Mais les indices sont conservés (le tableau n'est pas réindexé).

    Ou encore avec fnmatch (ou une expression régulière) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $array = array('5.jpg', 'index.htm', '5.wmv', '3.jpg', '5.flv', '3.wmv');
     
    function array_filter_by_pattern($array, $pattern) {
        $res = array();
        if (is_array($array)) {
            foreach ($array as $v) {
                if (fnmatch($v, $pattern)) { # Requiert un système non Windows
                    array_push($v, $res);
                }
            }
        }
        return $res;
    }
    $new_array = array_filter_by_pattern($array, "5*");
    print_r($new_array);

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Points : 8
    Points
    8
    Par défaut
    Merci !

    je suis en train de travailler sur la première solution (Windows XP oblige...)
    Je met le post comme résolu !

    EDIT : juste un détail, dans ta première solution, je veux remplacer le "5" à rechercher par une variable $variable, celà ne fonctionne plus... étonnant... tu vois certainement pourquoi ! si tu peux m'aider

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par soshin
    EDIT : juste un détail, dans ta première solution, je veux remplacer le "5" à rechercher par une variable $variable, celà ne fonctionne plus... étonnant... tu vois certainement pourquoi ! si tu peux m'aider
    Il faut procéder à une concaténation ou utiliser l'interpolation (dans l'ordre) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_array = array_filter($array, create_function('$elt', 'return strpos($elt, "' . $variable . '") === 0;'));
    Ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $new_array = array_filter($array, create_function('$elt', "return strpos($elt, '$variable') === 0;"));

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Points : 8
    Points
    8
    Par défaut
    J'étais sûr d'avoir essayé... bizarre...

    enfin, ça fonctionne parfaitement,

    je te remercie !!!

    DEFINITIVEMENT RESOLU

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Extraction des données dans plusieurs tableaux
    Par mayradouane dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 28/12/2013, 19h05
  2. [Tableaux] Traitement de données dans un Array
    Par abeh25 dans le forum Langage
    Réponses: 9
    Dernier message: 30/06/2009, 13h57
  3. [Tableaux] Manipulation de données dans un Array
    Par arnaudperfect dans le forum Langage
    Réponses: 4
    Dernier message: 06/02/2009, 16h35
  4. Réponses: 4
    Dernier message: 09/07/2006, 14h41
  5. Réponses: 2
    Dernier message: 08/10/2005, 22h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo