login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Array dubbele optellen (unieke lijst maken) (Opgelost)

Offline JLT - 18/01/2012 13:11
Avatar van JLTPHP interesse Halle allemaal,

Ik had al een draadje aangemaakt bij PHP & SQL, maar ik ben inmiddels met een andere oplossing (namelijk via een array) bezig, waar ik wat hulp bij nodig heb.

De array
product['product']['hoeveelheid']

Deze array bevat dubbelen zo kan een product vaker voorkomen met een verschillende hoeveelheid (zie voorbeeld hieronder).

De lijst nu:
1. nietmachine 1
2. pen 1
3. niet machine 2

Wat ik wil is een lijst met unieke producten met daarachter de hoeveelheid van dat product.

De lijst die ik wil hebben
1. nietmachine 3
2. pen 1

Ik zat met array_sum te spelen, maar ik wil alleen de dubbele optellen en niet alles. Iemand een idee?

Natuurlijk weer hartstikke bedankt voor de moeite en support.
Jelte


6 antwoorden

Gesponsorde links
Offline Frisbee - 18/01/2012 13:49
Avatar van Frisbee HTML beginner Waar maak je nu de array aan? Op die plaats zou je eigenlijk moeten checken of het product al in de array zit, en zo ja het aantal verhogen.
Offline JLT - 18/01/2012 14:19
Avatar van JLT PHP interesse Hoi Frisbee,

Bedankt voor je antwoord. Ik haal de gegevens uit een database en ik ben niet zo heel handig met SQL omdat daar te kunnen oplossen. Via onderstaande link kan je het stukje code bekijken dat ik gebruik. Misschien dat je daar nog wat aan hebt.

stukje code

Maar kan zoiets dan niet met array's?

Groet,
Jelte
Offline vinTage - 18/01/2012 22:23 (laatste wijziging 18/01/2012 22:29)
Avatar van vinTage Nieuw lid Was leukerdje om uit te zoeken!, korter kon ik het zo snel niet krijgen, maar het lijkt wel goed te werken hier 

  1. <?php
  2. $producten = array(
  3. array("product" => "nietmachine", "aantal" => 1),
  4. array("product" => "schaar", "aantal" => 2),
  5. array("product" => "pen", "aantal" => 3),
  6. array("product" => "nietmachine", "aantal" => 11),
  7. array("product" => "schaar", "aantal" => 22),
  8. array("product" => "pen", "aantal" => 33),
  9. );
  10.  
  11.  
  12. $new_array = array();
  13.  
  14. $i = 0;
  15. foreach($producten as $key)
  16. {
  17. if(!in_array($producten[$i]['product'], $new_array))
  18. {
  19. $new_array[] = $producten[$i]['product'];
  20. $new_array_totals[] = $producten[$i]['aantal'];
  21. }
  22. else
  23. {
  24. $new_array_totals[array_search($producten[$i]['product'], $new_array)] += $producten[$i]['aantal'];
  25. }
  26. $i++;
  27. }
  28.  
  29. $final = array_combine ($new_array, $new_array_totals);
  30. ?>
  31.  
  32. <pre>
  33. <?php print_r($final);?>
  34. </pre>
  35.  
  36.  
  37. <?php
  38. /*
  39. Array
  40. (
  41.   [nietmachine] => 12
  42.   [schaar] => 24
  43.   [pen] => 36
  44. )
  45. ?>

edit, print_r vergeten 

Offline JLT - 19/01/2012 16:11
Avatar van JLT PHP interesse Ha Vintage!

Helemaal goed! Ik heb het getest en het werkt prima... echt top!!

Ik weet dat ik het beter met een complexe query had kunnen doen, maar dat maakt voor nu niet uit. Het script draait op een niet al te vaak deel van de backoffice. So no worries!

Nog één vraagje
Eén klein vraagje nog. Ik wil de nieuwe array ($final) echo'en middels een foreach loop, maar ik krijg dit nu niet voor elkaar omdat de array geen key heeft aan het begin.

Bijvoorbeeld zoiets:
Plaatscode: 141581

Hopelijk kan je me hier nog mee helpen dan kan ik weer verder. Natuurlijk weer bedankt voor de top oplossingen en het meedenken!!

groet,
Jelte


Offline vinTage - 19/01/2012 16:31
Avatar van vinTage Nieuw lid
  1. foreach($final as $key => $value)
  2. {
  3. echo $value.' aantal: '.$key.'<br />';
  4. }
Offline JLT - 20/01/2012 13:50
Avatar van JLT PHP interesse Helemaal geweldig. Super bedankt!!
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.222s