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 :

Recherche tableau d'objets


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 48
    Points : 48
    Points
    48
    Par défaut Recherche tableau d'objets
    Bonjour,

    Voila j'ai un tableau d'objets ayant chacun 3 variables:

    type
    forme
    couleur

    J'aimerai sortir de ce tableau toutes les couleurs par exemple, mais sans récursivité. dois-je faire une boucle vérifiant chaque nouvelle entré ou y a-t-il une méthode qui peut me le permettre de récupérer en une fois comme un array_filter ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $tabfiltred = array_filter($tab, function($object){
    	return $object->couleur == 'rouge';
    Ici j'arrive à sortir tout les objets de la couleur demandé, mais l'objet en lui même ne m’intéresse pas, juste les possibilités de couleur dans le tableau. Merci

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 861
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 861
    Points : 6 565
    Points
    6 565
    Par défaut
    Un simple foreach devrait faire l'affaire. Ou bien array_map pour donner un air de programmation fonctionnelle à ton code.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 48
    Points : 48
    Points
    48
    Par défaut
    Bon ben ne trouvant pas,

    J'ai bricolé quelque chose qui fait mal au yeux, des réactions ? comment je peux rendre ça moins .... bordélique ?

    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
    16
    17
    18
    19
    20
    $newtab = array($tab[0]->couleur);
     
    foreach ($tab as $res)
    {
    	$i=0;
    	foreach ($newtab as $try)
    	{
    		$i=$i+1;
    		if ($try == $res->couleur)
    		{
    			break;
    		}else 
    		{
    			if ($i == count($newtab))
    			{ 
    				array_push($newtab, $res->couleur);
    			}
    		}	
    	}
    }

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 239
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 239
    Points : 15 539
    Points
    15 539
    Par défaut
    on peut faire cela avec des fonctions PHP
    je n'ai aucune idée si cela prend plus ou moins de ressources, ça reste à vérifier si c'est important pour toi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $newtab2 = array_map(function ($t) {return $t->couleur;}, $tab);
    $newtab2 = array_unique($newtab2);

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 48
    Points : 48
    Points
    48
    Par défaut
    Je te remercie array_unique c'est exactement ce que je cherchais à la base.

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 48
    Points : 48
    Points
    48
    Par défaut
    J'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => Rouge [10] => Bleu [17] => Vert [26] => Jaune [35] => Blanc )
    Il s'agit de la place du premier membre de chaque couleur.

    Y a-t-il une fonction d'array qui me permet de reindexer le tout de la manière : 0 1 2 3 4 tout simplement ? un array_merge ?

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2011
    Messages : 48
    Points : 48
    Points
    48
    Par défaut
    En fait Array_splice fait l'affaire et est plus simple dans la démarche. Je rajoute donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array_splice ($newtab2, count($newtab2));
    Et j'obtiens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => Rouge [1] => Bleu [2] => Vert [3] => Jaune [4] => Blanc )
    Merci les gens je pense pouvoir fermer le sujet.

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    Citation Envoyé par HoliCApplet Voir le message
    Y a-t-il une fonction d'array qui me permet de reindexer le tout de la manière : 0 1 2 3 4 tout simplement ?
    Ouaip : regarde du côté de array_values()

  9. #9
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 861
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 861
    Points : 6 565
    Points
    6 565
    Par défaut
    Une version avec foreach:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $result = [];
     
    foreach($tab as $v) {
        $result[$v->couleur] = 1;
    }
     
    $result = array_keys($result);
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

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

Discussions similaires

  1. Rechercher un objet dans un tableau d'objet
    Par mikaelm dans le forum Ruby
    Réponses: 6
    Dernier message: 11/06/2007, 17h58
  2. recherche d'un objet de type tableau dans un vector
    Par sandy07 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 07/06/2007, 09h16
  3. Sauvegarde / Chargement d'un tableau d'objets
    Par Naruto dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2004, 14h34
  4. [VB6]Tableau d'objet withevents
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 13/02/2004, 19h44
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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