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>