bonjour a tous

je récupère le contenu d'une variable que je passe dans un decode pour en sous tirer son contenu

je parviens a trouver le nombre d'article pour l'articles 111, ainsi que pour l'article 222 et le 333

Mais je souhaiterais également connaître le nombre d'article pour tous les autres

mais j'ai aussi des autres articles tel que a14 , b 25 , c58 ,e22 que je souhaite connaître le total de ces 4 articles (mais dans mon stock j'ai plus de 200 articles
par exemple si j'ai 3 articles dans a14
6 articles dans b25
8 articles dans c58
4 articles dans a22
ect...
que cela affiche total de 21
+ bien entendu la quantité des article spéciaux 111 ;222 ,333
pour obtenir le total absolu

voici mon code
$datanom = $stock;
$decodenom = json_decode($datanom);
$mailData1 = "";
$mailData2 = "";
$mailData3 = "";
$mailData4 = "";
$test = "";
$test1 = "";
$test2 = "";
$test3 = "";
$counts = [];
foreach ($decodenom  as $curr_elementnom) {
    $fieldName = $curr_elementnom->nom;
    $fieldQty = $curr_elementnom->quantite;
     $fieldPrice = $curr_elementnom->prix;
    $fieldimg = $curr_elementnom->url;
     if ( $fieldQty != 0 ) {
        if ($fieldPrice != 0) {
            if ($fieldName == 111) {
                $input1 =   '<div style ="border:solid;"> 
           <div style ="float: left;width: 50%;"> voici le nom</div >
           <div style =""> ' . $fieldName . '</div>
            <div style ="float: left;width: 50%;"> qanditée</div >
           <div style =""> ' . $fieldQty . '</div >
                 </div><br><br><br>';
                 $test=$fieldQty;
                $mailData1 .= $input1;
                @$counts[$fieldName]++;
            }
            elseif ($fieldName == 222) {
                $input2 =   '<div style ="border:solid;"> 
           <div style ="float: left;width: 50%;"> voici le nom</div >
           <div style =""> ' . $fieldName . '</div>
            <div style ="float: left;width: 50%;"> qanditée</div >
           <div style =""> ' . $fieldQty . '</div >
                  </div><br><br><br>';
                 $test1=$fieldQty;
                $mailData2 .= $input2;
                @$counts[$fieldName]++;
            }
            elseif ($fieldName == 333) {
                $input3 =   '<div style ="border:solid;"> 
            <div style ="float: left;width: 50%;"> qanditée</div >
           <div style =""> ' . $fieldQty . '</div >
           <div style ="float: left;width: 50%;"> voici le nom</div >
           <div style =""> ' . $fieldName . '</div>
                 </div><br><br><br>';
                    $test2=$fieldQty;
                $mailData3 .= $input3;
                @$counts[$fieldName]++;
            }
              else  {
                $input4 ='<div style ="border:solid;"> 
            <div style ="float: left;width: 50%;"> qanditée</div >
           <div style =""> ' . $fieldQty . '</div >
           <div style ="float: left;width: 50%;"> voici le nom</div >
           <div style =""> ' . $fieldName . '</div>
                 </div><br><br><br>';
                 $test3=$fieldQty;
                 $mailData4 .= $input4;
                 @$counts['other']++;
            }
        } 
    }
}


var_dump($test) ;
 var_dump($test1);
var_dump($test2);
 var_dump($test3);
Salut,

je ne comprends pas ce que tu veux faire mais bon..
Pourquoi tu fais des cas un par un au lieu de faire des tableaux vu que c'est toujours la même chose peu importe le cas ?

Je suppose qu'il te faudrait un truc du genre :

$datanom = $stock;
$decodenom = json_decode($datanom);
$mailData = [];
$test = [];
$counts = [];
foreach ($decodenom  as $curr_elementnom) {
    $fieldName = $curr_elementnom->nom;
    $fieldQty = $curr_elementnom->quantite;
     $fieldPrice = $curr_elementnom->prix;
    $fieldimg = $curr_elementnom->url;
     if ( $fieldQty != 0 ) {
        if ($fieldPrice != 0) {
            //if ($fieldName == 111) { //a priori de ce que j'ai compris, ce test ne sert a rien , tu veux le faire dans tous les cas peu importe le chiffre 
                $input[$fieldName] =   '<div style ="border:solid;"> 
           <div style ="float: left;width: 50%;"> voici le nom</div >
           <div style =""> ' . $fieldName . '</div>
            <div style ="float: left;width: 50%;"> qanditée</div >
           <div style =""> ' . $fieldQty . '</div >
                 </div><br><br><br>';
                 $test[$fieldName]=$fieldQty;
                $mailData[$fieldName] .= $input[$fieldName];
                @$counts[$fieldName]++;
            //}
      } 
    }
}

Modifié par Mathieuu (31 Aug 2022 - 13:37)
merci pour la réponse mais cela n'est pas si simple voici un extrait de json
[{"nom":0001,"prix":4.75,"quantite":"15"},{"nom":0002,"prix":4.75,"quantite":"5"},{"nom":003,"prix":4.75,"quantite":"8"},{"nom":111,"prix":77,"quantite":"3"},{"nom":222,"prix":79,"quantite":"4"},{"nom":333,"prix":92,"quantite":"5"}]


dans ce cas je souhaiterais avoir comme sortie

3 pour les 111

4 pour les 222

5 pour les 333

et 28 pour les autres
en fait je viens de trouver
il suffit que je remplace
$test3=$fieldQty;
par $test3 += $fieldQty;
Mais alors j'ai une belle erreur
Warning: A non-numeric value encountered in