Forum Clubic

[php] tableaux et doublons

bonjour

j ai plusieurs tableaux:
l un contient la designation du produit, un autre la quantite, un autre le prix d’achat , et le montant (quantite x prix achat)

en tout j en ai 5

ce qui m embete ce que j ai des doublons dont j aimerais ajoutant les quantites et les montant

la question c est comment je peux faire?

merci d’avance

no comprendo :neutre: … tu peux reformuler ? un ptit exemple à la clé ? :wink:

j ai les tableaux:
designation:
Array (
[0] => truc1
[1] => truc1
[2] => truc2
[3] => truc1
[4] => truc2
[5] => truc3 )

quantité:
Array (
[0] => 2
[1] => 1
[2] => 1
[3] => 7
[4] => 9
[5] => 1 )

référence fournisseur:
Array (
[0] => ADT710TP0130
[1] => ADT710TP0130
[2] => ADT710TN0201
[3] => ADT710TP0130
[4] => ADT710TN0201
[5] => inconnu144 )

théoriquement j ai 2 autres tableaux pour le prix achat et le montant total mais peu importe.

comme on le voit dans les désignation, on retrouve plusieurs fois certaines désignations

Ce que je veux c est avoir un tableau qui contiennent les désignations de facon unique, mais surtout on voit que les clés 0,1 et 3 ont le meme article, donc on ajoute les clé 0,1 et 3 du tableau quantité pour avoir une quantité globale pour le meme article etc etc

a la fin on obtiendrais:
designation:
Array (
[0] => truc1
[1] => truc2
[3] => truc3 )

quantité:
Array (
[0] => 10
[1] => 10
[2] => 1 )

référence fournisseur:
Array (
[0] => ADT710TP0130
[1] => ADT710TN0201
[2] => inconnu144 )

je suis plus clair ainsi?
merci d’avance

personne?

C’est simple : pour vérifier les doublons, pas 36 solutions :

Soit t le tableau à dédoublonner, t' un tableau intermédiaire
pour chaque élément e de t :
  si e n'est pas dans t, ajouter e à t'
  sinon e est un doublon, faire opération truc muche ...
fin pour

Passer le cap de l’algorithme si tu ne trouve pas ton bonheur…

(puis pour l’indexation, s’agit juste de map etc)

aller on t’aide un peu :
ca pourrais ressembler fortement à ca :


<?
$t = Array ('truc1','truc1','truc2','truc1','truc2','truc3' );
$q = array(2,1,1,7,9,1);
$f = array('ADT710TP0130','ADT710TP0130','ADT710TN0201','ADT710TP0130','ADT710TP0130','inconu144');


$tmp = array();
foreach($t as $id=>$elem ) {
  if(!isset($tmp[$elem])) $tmp[$elem] = array();
  $tmp[$elem]['qte'] += $q[$id];
  if(!isset($tmp[$elem]['fourn'])) $tmp[$elem]['fourn'] = $f[$id];
}           
echo '<pre>';
print_r($tmp);    
echo '</pre>';

//pour tes 3 tableaux
$tab_truc = array();
$tab_qte = array();
$tab_fourn = array();
foreach($tmp as $nomtruc=>$infos) {
  $tab_truc[] = $nomtruc;
  $tab_qte[] = $infos['qte'];
  $tab_fourn[] = $infos['fourn'];
}                                  
echo '<pre>';
print_r($tab_truc);
print_r($tab_qte);
print_r($tab_fourn);
echo '</pre>';
?>


j avais fait ca:


$dedoublon=array_unique($designation);
$nb_designation_unique=count($dedoublon);
$cle=array_keys($dedoublon);
for($z=0;$z<$nb_designation_unique;$z++)
	{
	$designation_vraie[$z]=$dedoublon[$cle[$z]];
	}

for($z=0;$z<$nb_designation_unique;$z++)
	{
	for($init=0;$init<=$nb_article;$init++)
  {
  if($designation[$init]==$designation_vraie[$z])
  	{
  	$quantite_vraie[$z]=$quantite[$init]+$quantite_vraie[$z];
  	$reffourniss_vraie[$z]=$reffourniss[$init];
  	$prix_achat_vrai[$z]=$prix_achat[$init];
  	}
  }
	}

on dirait que ca marche

Question bête, tes tableaux tu les choppes comment ? dans une bases de donnée ?

oui je génère directement les tableaux grace au base de données

Bah alors SELECT DISTINCT est ton amis

Et tu fais une somme du champ quantité aussi.

punaise il pouvait po le préciser avant lol
bon au moins on l’aura formé sur les tableaux :slight_smile:

j ai essaye de passer par mysql, mais j ai pas trouve de suite, alors je suis passe par les tableaux