Créer tableau php à partir d'un fichier xml + tri des valeurs
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:
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:
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> |