Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2011, 14h18   #1
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Par défaut Petit casse-tête pour les amateurs de tableaux

Bonjour à tous,

Décidément, les tableaux, c'est pas mon truc...

Soit le tableau suivant :

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
 
Array
(
    [0] => Array
        (
            [423] => Array
                (
                    [0] => 19.60
                    [1] => 48.18
                )
 
        )
 
    [1] => Array
        (
            [423] => Array
                (
                    [0] => 5.50
                    [1] => 4.94
                )
 
        )
 
    [2] => Array
        (
            [423] => Array
                (
                    [0] => 5.50
                    [1] => 1.32
                )
 
        )
 
    [3] => Array
        (
            [424] => Array
                (
                    [0] => 19.60
                    [1] => 4.92
                )
 
        )
 
    [4] => Array
        (
            [424] => Array
                (
                    [0] => 5.50
                    [1] => 1.88
                )
 
        )
)
Comment le réduire à :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Array (
 
      [423]=>Array(
            [19.60] => 48.18
            [5.50]  =>  6.26
 
       )
      [424]=>Array(
	    [19.60] => 4.92
            [5.50]  => 1.88
 
       )
 
)
Vous l'aurez compris : les clés 423, 424 sont des N° de commande et les clés 19.60 et 5.50 sont des taux de TVA dont les valeurs sont les montants correspondants.
Je voudrais regrouper, par clés de N° commande, les taux de TVA et le cumul de leurs valeurs.
Je ne mets pas ici ce que j'ai essayé, des tableaux tmp et autres, le post ferait 10 km de long...
Merci de votre coup de main.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 14h36   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
combien de ligne? on doit pouvoir faire mieux!

Code :
1
2
3
4
5
6
7
8
9
10
11
foreach( $original as $value )
{
 if ( is_array($value) )
 {
   $tmp = current($value);
   if ( is_array( $tmp )
   {
     $new[key($value)][$tmp[0]]= $tmp[1] ;
   }
 }
}
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 14h41   #3
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Bonjour,

Merci de répondre à mon post.
Combien de ligne ? je l'ignore ! Le tableau de base et issu de plusieurs requêtes SQL jointes et les valeurs sont calculées dans une boucle. Il n'y a, au maximum, que 2 taux de TVA : 5.50 et 19.60. Et ce sont les cumuls de montants par taux et par commande dont j'ai besoin...

Je ne sais pas si je suis très clair...
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 14h44   #4
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
j'ai modifié le code proposé plusieurs fois.
"combien de ligne" c'était parce que quelqu'un peu avoir une idée plus performante.
fait voir le SQL, je suis sur que c'est plus facile à faire en SQL..
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 14h46   #5
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
Citation:
[5.50] => 6.26
je sais pas d'ou tu l'as ce 6.26
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 14h53   #6
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
Citation:
Je sais pas d'ou tu l'as ce 6.26
C'est le cumul montants du taux 5.50 pour la commande 423.

Mais, grâce à ton bout de code, je pense avoir trouvé la soluce. Les résultats me paraissent bons. Je mettrai "Résolu" quand j'aurai mieux vérifié :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
$new = array();
foreach( $tab as $value )
{
 if ( is_array($value) )
 {
   $tmp = current($value);
  if ( is_array( $tmp ))
  {
    if($new[key($value)][$tmp[0]] != ""){
	$new[key($value)][$tmp[0]] += $tmp[1] ;
	}else{
	$new[key($value)][$tmp[0]] = $tmp[1] ;
	}  
  }
 }
}
Me sort bien les cumuls de montants par taux et par commande.
Déjà, un grand grand merci à toi !
Vais essayer aussi de décortiquer ce code pour bien le comprendre.
renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 14h59   #7
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
perso j'aime pas

if($new[key($value)][$tmp[0]] != "")

utilise isset() à la place.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 15h20   #8
Membre confirmé
 
Avatar de renaud26
 
Inscription : mars 2003
Messages : 1 043
Détails du profil
Informations personnelles :
Âge : 48
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : mars 2003
Messages : 1 043
Points : 285
Points : 285
...En tout cas, moi, j'ai bien aimé ton aide !
Je te remercie beaucoup et te souhaite une bonne fin de journée.

renaud26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2011, 15h25   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par gene69 Voir le message
perso j'aime pas

if($new[key($value)][$tmp[0]] != "")

utilise isset() à la place.
!empty plutôt
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h01.


 
 
 
 
Partenaires

Hébergement Web