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] Filtrer les clés d'un tableau


Sujet :

Langage PHP

  1. #1
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut [Tableaux] Filtrer les clés d'un tableau
    Salut,
    est-ce que quelqu'un connaît une fonction permettant de supprimer les clés d'un tableau en fonction d'un tableau de clés à garder ? ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $t = array('a' => 0, 'b' => 1, 'c' => 2);
    $u = array('a' => 0, 'c' => 2);
    $t = filter($u);
    print_r($t); // donne Array { 'b' => 1}
    Ou bien faut-il créer une callback et utliser filter_array() ?

    Merci et a+

  2. #2
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 494
    Points : 6 062
    Points
    6 062
    Par défaut
    Citation Envoyé par Djakisback
    Salut,
    est-ce que quelqu'un connaît une fonction permettant de supprimer les clés d'un tableau en fonction d'un tableau de clés à garder ? ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $t = array('a' => 0, 'b' => 1, 'c' => 2);
    $u = array('a' => 0, 'c' => 2);
    $t = filter($u);
    print_r($t); // donne Array { 'b' => 1}
    Ou bien faut-il créer une callback et utliser filter_array() ?

    Merci et a+
    essay de jouer avec le array_key qui permet de retourner les index avec ça te permet de faire une unset sur ces éléments.

  3. #3
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Bonjour,

    array_filter ne répondra pas a tes attentes car la fonction de callback ne recoit que la valeur et pas la clé.

    A mon avis array_udiff_assoc() devrait répondre à tes attentes.

    Bonne journée

  4. #4
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut et merci pour vos réponses.
    En fait c'est array_intersect_key() qui me serait bien utile mais non utilisable en PHP4 :/
    J'ai l'impression qu'il va falloir que je code ca moi-même.

  5. #5
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Bon bin voilà ce que ca donne, si quelqu'un a mieux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /**
    * Supprime les champs de l'objet non spécifiés dans les arguments.
    */
    function filterFields()	{
    	$fieldNames = array_flip(func_get_args());
    	if($this->fields !== null)	{
    		foreach($this->fields as $fieldName => $field)	{
    			if(!array_key_exists($fieldName, $fieldNames))	{
    				unset($this->fields[$fieldName]);
    			}
    		}
    	}
    }
    Bye et merci ^^

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

Discussions similaires

  1. [Tableaux] Réincrémenter les clés d'un tableau
    Par Katachana dans le forum Langage
    Réponses: 6
    Dernier message: 05/02/2008, 13h06
  2. [Tableaux] Modifier les clés d'un tableau
    Par <nbweb> dans le forum Langage
    Réponses: 2
    Dernier message: 22/03/2007, 09h43
  3. [Tableaux] Modifier les clés d'un tableau
    Par licorne dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2007, 15h51
  4. [Tableaux] re-indexer les clés d'un tableau
    Par julien.63 dans le forum Langage
    Réponses: 3
    Dernier message: 19/07/2006, 17h56
  5. Réponses: 1
    Dernier message: 15/03/2006, 16h58

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