Bonjour,
je souhaite créer un tableau php à partir des données présente dans un fichier xml(code ci-dessous) et suite à cela faire un tri des valeurs présente dans le tableau, mais je n'arrive pas à obtenir le résultat voulu, je bloque complétement pouvez-vous m'aider svp.
Merci d'avance,
Voici mon code:
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 <?php $fichier = 'fichier_global_offer.xml'; $xml = simplexml_load_file($fichier); $planOffer = $xml->xpath('//Niv2_Offre'); $planOperation = $xml->xpath('//Niv1_Operation'); $m=0; foreach ($planOffer as $offer) { $code = $offer->{"Informations"}->{"Code"}; $offerName = $offer->{"Informations"}->{"Designation"}; $catOne = $offer->{"Informations"}->{"Categorie_Un"}; $catTwo = $offer->{"Informations"}->{"Categorie_Deux"}; $parentCode = $offer->{"Code"}->{"Code_Niv1"}; $beginDate = $offer->{"Criteres"}->{"Date_de_debut"}; $endDate = $offer->{"Criteres"}->{"Date_de_fin"}; $client = $offer->{"Criteres"}->{"Client"}; $execution = $offer->{"Criteres"}->{"Execution"}; $exclusion = $offer->{"Criteres"}->{"Articles_OUT"}; $canalDistrib = $offer->{"Criteres"}->{"canal_Distribution"}; if(empty($canalDistrib)) { $canalDistrib = "mag"; } foreach ($planOperation as $operation) { $opeCode = $operation->{"Code_operation"}; if($opeCode == $parentCode) { $operationName=$operation->{"Nom_operation"}; } else { $operationName='non'; } } $desc='cible'.$client. ' - opération "'.$operationName.'" - code'.$code.' '.$offerName.' '.$execution.' // '.$canalDistrib.' Marques exclues : '.$exclusion.' Date de validité : du '.$beginDate.' au '.$endDate; $array_offerPlan[$m]=array( array('CAT1' => $catTwo, 'CAT2' => $catOne, 'INFO' => $desc)); $m++; } $array_offerPlan2 = array_msort($array_offerPlan, array('CAT1' => SORT_DESC, 'CAT2' => SORT_DESC)); var_dump($array_offerPlan, $array_offerPlan2); function array_msort($array, $cols) { $colarr = array(); foreach ($cols as $col => $order) { $colarr[$col] = array(); foreach ($array as $k => $row) { $colarr[$col]['_'.$k] = strtolower($row[$col]); } } $eval = 'array_multisort('; foreach ($cols as $col => $order) { $eval .= '$colarr[\''.$col.'\'],'.$order.','; } $eval = substr($eval,0,-1).');'; eval($eval); $ret = array(); foreach ($colarr as $col => $arr) { foreach ($arr as $k => $v) { $k = substr($k,1); if (!isset($ret[$k])) $ret[$k] = $array[$k]; $ret[$k][$col] = $array[$k][$col]; } } return $ret; } ?>
voici le fichier xml:
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124<?xml version="1.0" encoding="utf-8"?> <xmlGlobal> <Niv0_Campagne> <Nom_campagne>TEST ABE</Nom_campagne> <Code_campagne>2020</Code_campagne> </Niv0_Campagne> <Niv1_Operation> <Nom_operation>TEST 2 ABE</Nom_operation> <Code_operation>2021</Code_operation> </Niv1_Operation> <Niv2_Offre> <Code> <Code_Niv0>2020</Code_Niv0> <Code_Niv1>2021</Code_Niv1> <Code_Niv2>2022</Code_Niv2> </Code> <Informations> <ID>1</ID> <Date_de_création>09/06/2017</Date_de_création> <Code>2022</Code> <Compteur>0</Compteur> <Designation>TEST 3 ABE</Designation> <Benefice_client>Marques exclues : Anastasia, Becca, Dafni, Dyson</Benefice_client> <Financement>Mixte</Financement> <Statut>En cours de paramètrage</Statut> <Categorie_Un>Solde</Categorie_Un> <Categorie_Deux>Remise totale panier tous clients</Categorie_Deux> <Priorité>100_Operations_cumulables_niveau_1</Priorité> </Informations> <Criteres> <Transaction>Quantity_Item = 2</Transaction> <Date_de_debut>2017-07-09</Date_de_debut> <Date_de_fin>2017-07-16</Date_de_fin> <Articles_IN>1635 ; 2581 ; 4666 ; </Articles_IN> <Magasins_concernes>30280; 30160; </Magasins_concernes> <Execution>valable 1 seule fois</Execution> <Perimetre>Sélection de magasin</Perimetre> <canal_Distribution>mag + eStore</canal_Distribution> </Criteres> <Actions> <Type_de_remise>Action_Reduce Montant/Fixe 35</Type_de_remise> <Message>ligne1; ligne2; </Message> </Actions> </Niv2_Offre> <Niv0_Campagne> <Nom_campagne>TEST ABE</Nom_campagne> <Code_campagne>2029</Code_campagne> </Niv0_Campagne> <Niv1_Operation> <Nom_operation>TEST 2 ABE</Nom_operation> <Code_operation>2030</Code_operation> </Niv1_Operation> <Niv2_Offre> <Code> <Code_Niv0>2029</Code_Niv0> <Code_Niv1>2030</Code_Niv1> <Code_Niv2>2031</Code_Niv2> </Code> <Informations> <ID>2</ID> <Date_de_création>09/06/2017</Date_de_création> <Code>2031</Code> <Compteur>0</Compteur> <Designation>TEST 3 ABE</Designation> <Benefice_client>Marques exclues : Anastasia, Becca, Dafni, Dyson</Benefice_client> <Financement>Mixte</Financement> <Statut>En cours de paramètrage</Statut> <Categorie_Un>Solde</Categorie_Un> <Categorie_Deux>Message CRM</Categorie_Deux> <Priorité>100_Operations_cumulables_niveau_1</Priorité> </Informations> <Criteres> <Transaction>Quantity_Item = 2</Transaction> <Date_de_debut>2017-07-09</Date_de_debut> <Date_de_fin>2017-07-16</Date_de_fin> <Articles_IN>1635 ; 2581 ; 4666 ; </Articles_IN> <Magasins_concernes>30280; 30160; </Magasins_concernes> <Execution>valable 1 seule fois</Execution> <Perimetre>Sélection de magasin</Perimetre> <canal_Distribution/> </Criteres> <Actions> <Type_de_remise>Action_Reduce Montant/Fixe 35</Type_de_remise> <Message>ligne1; ligne2; </Message> </Actions> </Niv2_Offre> <Niv0_Campagne> <Nom_campagne>Test ABE </Nom_campagne> <Code_campagne>455</Code_campagne> </Niv0_Campagne> <Niv1_Operation> <Nom_operation>cible white - opération "BlackFriday Week" </Nom_operation> <Code_operation>456</Code_operation> </Niv1_Operation> <Niv2_Offre> <Code> <Code_Niv0>455</Code_Niv0> <Code_Niv1>456</Code_Niv1> <Code_Niv2>457</Code_Niv2> </Code> <Informations> <ID>3</ID> <Date_de_création>01/06/2017</Date_de_création> <Code>457</Code> <Compteur>0</Compteur> <Designation>Offre 'cible white - opération</Designation> <Benefice_client>Marques exclues : Anastasia, Becca, Dafni, Dyson</Benefice_client> <Financement>Mixte</Financement> <Statut>Active - Echue</Statut> <Categorie_Un>Institutionnelle</Categorie_Un> <Categorie_Deux>Message CRM</Categorie_Deux> <Priorité>100_Operations_cumulables_niveau_1</Priorité> </Informations> <Criteres> <Magasins_concernes/> <Execution/> <canal_Distribution/> </Criteres> <Actions> <Message/> </Actions> </Niv2_Offre> <ID>3</ID> </xmlGlobal>
Partager