Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ PHP _ Utknąłem z tablicą pomocy

Napisany przez: ZenekN 22.02.2021, 17:19:20

Witam mam tablice w takiej postaci

  1. http://www.php.net/array (size=2)
  2. 'id1' =>
  3. http://www.php.net/array (size=7)
  4. 0 => int 69997
  5. 1 => int 69997
  6. 2 => int 72047
  7. 3 => int 72784
  8. 4 => int 72699
  9. 5 => int 72699
  10. 6 => int 72699
  11. 'ilosc' =>
  12. http://www.php.net/array (size=7)
  13. 0 => int 0
  14. 1 => int 0
  15. 2 => int 0
  16. 3 => int 0
  17. 4 => int 4
  18. 5 => int 4
  19. 6 => int 1


potrzebuje aby output wyglądał w ten sposób że dla tych samych id1 sumowała sie łączna z tablicy ilość

  1.  
  2.  
  3. [php]
  4. http://www.php.net/array (size=2)
  5. 'id1' =>
  6. http://www.php.net/array (size=7)
  7. 0 => int 69997
  8. 1 => int 72047
  9. 2 => int 72784
  10. 3 => int 72699
  11.  
  12. 'ilosc' =>
  13. http://www.php.net/array (size=7)
  14. 0 => int 0
  15. 1 => int 0
  16. 2 => int 0
  17. 3 => int 9
  18.  

albo w ten sposób
  1.  
  2.  
  3. http://www.php.net/array
  4. 69997 => 0
  5. 72047 => 0
  6. 72784 => 0
  7. 72699 => 9
  8.  
  9.  
  10.  


zrobiłem

  1. foreach($zzs as $zzk => $zzv) {
  2.  
  3. $s[] = http://www.php.net/array($zzv['id1'] => $zzv['ilosc']);
  4. }
  5. foreach($s as $t => $z) {
  6. foreach($z as $l => $p) {
  7. $xt[$l] += $p;
  8. }
  9. }

Napisany przez: nospor 22.02.2021, 17:21:38

Nazewnictwo zmiennych powala. Nastepnym razem uzyj laciny, bedzie jeszzcze trudniej sie polapac wink.gif

No ale twoj kod nie robi tego co chciales pierwotnie

edit: dobra, robi. Nie widzialem wczesniej tego ALBO wink.gif

Napisany przez: LowiczakPL 22.02.2021, 18:58:24


  1. $nowaTablica = http://www.php.net/array_count_values($liczonaTablica);

Napisany przez: nospor 23.02.2021, 10:37:42

@ LowiczakPL I jak to sie ma do problemu procz faktu ze nic a nic? wink.gif

Napisany przez: Malinaa 2.03.2021, 23:44:32

Można tak:

  1. <?php
  2.  
  3. $arrayData = http://www.php.net/array(
  4. 'id' => http://www.php.net/array(
  5. 0 => 69997,
  6. 1 => 69997,
  7. 2 => 72047,
  8. 3 => 72784,
  9. 4 => 72699,
  10. 5 => 72699,
  11. 6 => 72699
  12. ),
  13. 'quantity' => http://www.php.net/array(
  14. 0 => 0,
  15. 1 => 0,
  16. 2 => 0,
  17. 3 => 0,
  18. 4 => 4,
  19. 5 => 4,
  20. 6 => 1
  21. )
  22. );
  23.  
  24. $value = 0;
  25. $arrayId = http://www.php.net/array();
  26. $arrayQty = http://www.php.net/array();
  27. $arrayCount = http://www.php.net/array();
  28. $arrayResult = http://www.php.net/array();
  29.  
  30. foreach ($arrayData as $value) {
  31. foreach ($value as $k => $v) {
  32. if (!http://www.php.net/in_array($v[$k], $value)) {
  33. $arrayId[] = $v;
  34. }
  35. else {
  36. $arrayQty[] = $v;
  37. }
  38. }
  39. }
  40.  
  41. foreach ($arrayId as $key => $value) {
  42. if (http://www.php.net/array_key_exists($value, $arrayCount)) {
  43. $arrayResult[$value] = $arrayCount[$value] + $arrayQty[$key];
  44. }
  45.  
  46. $arrayCount[$value] = $arrayQty[$key];
  47. $arrayCount[$value] = $arrayCount[$value] + $arrayQty[$key];
  48.  
  49. if (!http://www.php.net/isset($arrayResult[$value])) $arrayResult[$value] = $arrayCount[$value] + $arrayQty[$key];
  50. }
  51.  
  52. http://www.php.net/echo '<pre>';
  53. http://www.php.net/print_r($arrayData);
  54. http://www.php.net/echo '</pre>';
  55. http://www.php.net/echo '<hr>';
  56. http://www.php.net/echo '<pre>';
  57. http://www.php.net/print_r($arrayResult);
  58. http://www.php.net/echo '</pre>';
  59.  
  60. ?>


Z podanej tablicy tworzę dwie, następnie zliczam ilość dla wartości id.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)