Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wielowymiarowa tablica, sumowanie tych samych kluczy
Forum PHP.pl > Forum > PHP
AndyPSV
Kod
array ( 0 => array ( 'id' => '6', 't' => 'Food & Beverage', ), 1 => array ( 'id' => '6', 't' => 'Food & Beverage', ), 2 => array ( 'id' => '2', 't' => 'Automotive', ), )


jak to zsumowac, aby dostac:

Kod
array ( 0 => array ( 'id' => '6', 't' => 'Food & Beverage', 'cnt' => '2' ), 1 => array ( 'id' => '2', 't' => 'Automotive', 'cnt' => '1' ), )
redeemer
Jeżeli ta tablica jest "wyciągana" z bazy danych, to można to załatwić już na poziomie zapytania SQL:
  1. SELECT id,t,count(*) AS cnt FROM tabela GROUP BY t;

Jeżeli zaś nie, to taki kod powinien zadziałać:
  1. $array = array ( 0 => array ( 'id' => '6', 't' => 'Food & Beverage', ), 1 => array ( 'id' => '6', 't' => 'Food & Beverage', ), 2 => array ( 'id' => '2', 't' => 'Automotive', ), );
  2.  
  3. $return = array();
  4. $count = array();
  5. foreach( $array as $item ) {
  6. if ( !in_array($item, $return) ) {
  7. $return[] = $item;
  8. $count[ $item['id'] ] = 1;
  9. } else {
  10. $count[ $item['id'] ]++;
  11. }
  12. }
  13.  
  14. foreach( $return as & $item ) {
  15. $item['cnt'] = (int)$count[ $item['id'] ];
  16. }
  17.  
  18. var_dump( $return );
AndyPSV
dzieki ogromne, o taki kod chodzilo
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.