Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/02/2012, 01h15   #1
Membre régulier
 
Avatar de laloune
 
Inscription : mai 2005
Messages : 180
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 180
Points : 88
Points : 88
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 :
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 :
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 !
__________________
laloune
éternel apprenti développeur (pas de formation)

"C'est le jeu ma pauvre Lucette"
laloune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 09h03   #2
Membre du Club
 
Homme
Développeur Web
Inscription : 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 : 53
Points : 53
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 :
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
osore est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/02/2012, 14h28   #3
Membre régulier
 
Avatar de laloune
 
Inscription : mai 2005
Messages : 180
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 180
Points : 88
Points : 88
ma foi oui ca me parait être une solution ! merci beaucoup

je teste ca cette nuit
__________________
laloune
éternel apprenti développeur (pas de formation)

"C'est le jeu ma pauvre Lucette"
laloune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 10h00   #4
Membre régulier
 
Avatar de laloune
 
Inscription : mai 2005
Messages : 180
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 180
Points : 88
Points : 88
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 ?
__________________
laloune
éternel apprenti développeur (pas de formation)

"C'est le jeu ma pauvre Lucette"
laloune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 10h17   #5
Membre du Club
 
Homme
Développeur Web
Inscription : 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 : 53
Points : 53
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 :
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);
	}
}
osore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 10h52   #6
Membre régulier
 
Avatar de laloune
 
Inscription : mai 2005
Messages : 180
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 180
Points : 88
Points : 88
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,
__________________
laloune
éternel apprenti développeur (pas de formation)

"C'est le jeu ma pauvre Lucette"
laloune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 23h19   #7
Membre régulier
 
Avatar de laloune
 
Inscription : mai 2005
Messages : 180
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 180
Points : 88
Points : 88
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))
__________________
laloune
éternel apprenti développeur (pas de formation)

"C'est le jeu ma pauvre Lucette"
laloune est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h37.


 
 
 
 
Partenaires

Hébergement Web