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 :

Opération complexe sur un tableau


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 486
    Points : 877
    Points
    877
    Par défaut Opération complexe sur un tableau
    Bonjour à tous,

    je souhaiterais savoir s'il est possible de faire ceci: j'ai une variable $tableau qui renvoie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Array (
    [0] => Array ( [name] => Germany [alias] => [indent] => 2 )
    [1] => Array ( [name] => Holding [alias] => [indent] => 1 )
    [2] => Array ( [name] => Germany [alias] => [indent] => 3 )
    [3] => Array ( [name] => Holding-avant-crise [alias] => [indent] => 2 )
    [4] => Array ( [name] => Sub-Holding [alias] => [indent] => 1 )
    )
    je cherche à faire un split assez complexe du tableau en 2 qui contiendraient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $tab1:
    Array(
    [0] => Array ( [name] => Germany [alias] => [indent] => 2 )
    [1] => Array ( [name] => Holding [alias] => [indent] => 1 )
    )
    $tab2:
    Array(
    [0] => Array ( [name] => Germany [alias] => [indent] => 3 )
    [1] => Array ( [name] => Holding-avant-crise [alias] => [indent] => 2 )
    [2] => Array ( [name] => Sub-Holding [alias] => [indent] => 1 )
    )
    soit utiliser la valeur de la clef indent.

    Savez-vous s'il est possible d'atteindre un tel résultat ?

    D'avance merci !

  2. #2
    En attente de confirmation mail
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 32
    Points : 54
    Points
    54
    Par défaut
    Bonjour,
    Une solution un peu barbare consiterait à parcourir ton tableau et de vérifier la valeur de ton index "indent" à chaque boucle. Si la valeur de ton indent est supérieur à celle du précédent, tu créé un nouveau tableau.

    Code php : 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
    21
    22
    23
    24
    25
    $tabComplet = Array (
    		0 => Array ( "name" => "Germany", "alias" => "", "indent" => 2 ),
    		1 => Array ( "name" => "Holding", "alias" => "", "indent" => 1 ),
    		2 => Array ( "name" => "Germany", "alias" => "", "indent" => 3 ),
    		3 => Array ( "name" => "Holding-avant-crise", "alias" => "", "indent" => 2 ),
    		4 => Array ( "name" => "Sub-Holding", "alias" => "", "indent" => 1 )
    		);
     
    //Initialisation
    $index=-1;
    $lastIndent=0;		
    $tableauOut = array();
    //Parcours le tableau
    foreach($tabComplet as $tabPart){
    	//Vérifier si la valeur indent existe
    	if(isset($tabPart["indent"])){
    		//Si la valeur de indent est supérieur à la précédente on créé un autre tableau
    		if($tabPart["indent"] > $lastIndent){ 
    			$index++; 
    		}
    		$tableauOut[$index][] = $tabPart;
    		$lastIndent = $tabPart["indent"];
    	}
    }
    print_r($tableauOut);

    Après peu être que quelqu'un à une solution un peu moin bourrin

  3. #3
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 486
    Points : 877
    Points
    877
    Par défaut
    ma foi oui ca me parait être une solution ! merci beaucoup

    je teste ca cette nuit

  4. #4
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 486
    Points : 877
    Points
    877
    Par défaut
    effectivement ca fonctionne bien. Merci beaucoup !

    dernière petite question subsidiaire: est-il possible de récupérer le nom du tableau (parmi les 2 générés) dont le dernier element s'appelle X ?

  5. #5
    En attente de confirmation mail
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 32
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par laloune Voir le message
    dernière petite question subsidiaire: est-il possible de récupérer le nom du tableau (parmi les 2 générés) dont le dernier element s'appelle X ?
    Alors là j'ai pas tout compris

    Tu veux récupérer un des deux tableaux en fonction de l'index "name" du dernier tableau le composant c'est ça?

    du genre :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $stringToCompare = "Sub-Holding";
    foreach($tableauOut as $tabPart){
    	$nomLast = (!empty($tabPart[count($tabPart)-1]["name"])) ? $tabPart[count($tabPart)-1]["name"] : "";
    	if($stringToCompare === $nomLast){
    		var_dump($tabPart);
    	}
    }

  6. #6
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 486
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par osore Voir le message
    Alors là j'ai pas tout compris

    Tu veux récupérer un des deux tableaux en fonction de l'index "name" du dernier tableau le composant c'est ça?
    ma foi oui c'est le cas. En gros je souhaite lui dire: lorsque le dernier élément du tableau est "Sub-Holding", alors on renvoie le tableau 1.

    ainsi, je pense que ton bout de code répond à ce besoin, je teste ca dès que possible

    merci beaucoup,

  7. #7
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 486
    Points : 877
    Points
    877
    Par défaut
    ma foi ca a super bien fonctionné ! je suis arrivé au bout de mon problème.

    merci encore osore (et une rime en prime (en fait ca fait deux rimes))

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

Discussions similaires

  1. [TPW] Unité Complex2 : Opérations élémentaires sur les nombres complexes
    Par forum dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 04/12/2011, 11h44
  2. Réponses: 23
    Dernier message: 06/10/2011, 13h16
  3. [XL-2007] Opérations (+,-, ..) sur variables tableau
    Par bob3333 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/04/2011, 15h41
  4. Opération complexe sur colonne varchar
    Par CinePhil dans le forum Requêtes
    Réponses: 5
    Dernier message: 17/10/2008, 14h51
  5. [VB6]opération sur un tableau complet en une seule fois?
    Par marco62118 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 24/05/2006, 12h50

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