Tableau php. [Résolu]

Signaler
Messages postés
42
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
5 décembre 2015
-
Messages postés
42
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
5 décembre 2015
-
Bonjour à tous,

Je galère avec un tableau php.

Je travaille sur un ERP, et je dois ajouter les montants des écotaxes en fin de facture. Comme chaque article à des taxes différentes, je génère un tableau de ce type :

Array
(
    [2] => Array
        (
            [code] => Petit appareil
            [title] => Cotisation de recyclage Ecotrel.
            [price] => 0.068
            [qty] => 1
            [IDitem] => 4321
        )

    [3] => Array
        (
            [code] => Piles
            [title] => Cotisation de recyclage Ecobatterien.
            [price] => 0.06
            [qty] => 2
            [IDitem] => 4321
        )

    [4] => Array
        (
            [code] => Appareil moyen
            [title] => Cotisation de recyclage Ecotrel.
            [price] => 0.088
            [qty] => 1
            [IDitem] => 3547
        )

    [5] => Array
        (
            [code] => Piles
            [title] => Cotisation de recyclage Ecobatterien.
            [price] => 0.06
            [qty] => 2
            [IDitem] => 3547
        )

)

Maintenant, je voudrais un affichage de ce type


Cotisation de recyclage Ecotrel.
Petit appareil - 1 X 0.068 €
Appareil moyen - 1 X 0.088 €

Cotisation de recyclage Ecobatterien.
Piles - 4 X 0.06 €



Est-ce que quelqu'un aurait une idée pour moi ?

Merci d'avance.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.

1 réponse

Messages postés
32944
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
351
Bonjour,

Comme ceci par exemple ? :

<?php
// activation de l'affichage des erreurs PHP
error_reporting(E_ALL);

$tonArray=Array
  (
    "2" => Array
        (
            "code" => "Petit appareil"
            ,"title" => "Cotisation de recyclage Ecotrel."
            ,"price" => "0.068"
            ,"qty" => "1"
            ,"IDitem" => "4321"
        )

    ,"3" => Array
        (
            "code" => "Piles"
            ,"title" => "Cotisation de recyclage Ecobatterien."
            ,"price" => "0.06"
            ,"qty" => "2"
            ,"IDitem" => "4321"
        )

    ,"4" => Array
        (
            "code" => "Appareil moyen"
            ,"title" => "Cotisation de recyclage Ecotrel."
            ,"price" => "0.088"
            ,"qty" => "1"
            ,"IDitem" => "3547"
        )

    ,"5" => Array
        (
            "code" => "Piles"
            ,"title" => "Cotisation de recyclage Ecobatterien."
            ,"price" => "0.06"
            ,"qty" => "2"
            ,"IDitem" => "3547"
        )
  );


	//Je remet en forme l'array de façon à classer par TITRE et par CODE
$new_array=array();
foreach($tonArray as $R){
 $code= isset($R['code'])?$R['code']:'';
 $title = isset($R['title'])?$R['title']:'';
 $price= isset($R['price'])?$R['price']:'';
 $qty= isset($R['qty'])?$R['qty']:'';
 $IDitem= isset($R['IDitem'])?$R['IDitem']:'';

 $new_array[$title][$code][] = array(
                                 'price' =>$price
                                 ,'qty' =>$qty
                                 ,'IDitem' =>$IDitem
                                 );
  

}

// Je génère l'affichage désiré
$retour = "";
foreach($new_array as $Title=>$codes){
	$retour .= "<pre><b>$Title</b>";
	foreach($codes as $code => $items){
		if(!is_array($items)){
      $price= isset($items['price'])?$items['price']:'';
      $qty= isset($items['qty'])?$items['qty']:'';
		}else{
			 $qty = 0;
			 foreach($items as $sousItems){
	        $price = isset($sousItems['price'])?$sousItems['price']:'';
          $qty += isset($sousItems['qty'])?$sousItems['qty']:'';	 
			 }
		}
  $retour .="<br>$code : $qty x $price euros";
 }
  $retour .="</pre>";
	
}
//affichage :
echo $retour;


?>



Ce qui donne :

Cotisation de recyclage Ecotrel.
Petit appareil : 1 x 0.068 euros
Appareil moyen : 1 x 0.088 euros

Cotisation de recyclage Ecobatterien.
Piles : 4 x 0.06 euros



Messages postés
42
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
5 décembre 2015

Bonjour Jordane et un grand merci. Ce code fonctionne parfaitement.

Je me doutais bien qu'il fallait passer par un tableau intermédiaire.

J'ai juste un peu de mal à comprendre cette syntaxe :

<?php
$var= isset($table['index'])?$table['index']:'';
?>


Si ce n'est pas abusé de ton temps, tu peux m'en dire plus ?
Et encore merci.
Messages postés
32944
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
351
ISSET : Sert à s'assurer que la variable existe

$var =  condition ? valeur si vrai : valeur si faux ;

C'est ce qu'on appel l'écriture ternaire. Une autre façon de faire un if.
ça remplace :

if( isset($table['index']) ) {
  $var = $table['index'];
}else{
 $var = '';
}

Messages postés
42
Date d'inscription
mardi 23 mars 2004
Statut
Membre
Dernière intervention
5 décembre 2015
>
Messages postés
32944
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021

OK merci beaucoup, bonne soirée à toi.