Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przechodzenie po tablicy [iteracja]
Forum PHP.pl > Forum > Przedszkole
starter91php
Hej, mam problem z pzrerobieniem jednego formatu tablicy na inny.

Powiedzmy, że mam tablicę:

  1. array ( [0] => array( [atr1] => jakas_wartosc1, [atr_id] => 15), [1] => array( [atr1] => 'jakas_wartosc2, [atr_id] => 15), [2] => array( [atr1] => 'jakas_wartosc3, [atr_id] => 15), [3] => array( [atr1] => 'jakas_wartosc4, [atr_id] => 15),
  2. [4] => array( [atr1] => 'jakas_wartosc5, [atr_id] => 99), [5] => array( [atr1] => 'jakas_wartosc6, [atr_id] => 99),
  3. [6] => array( [atr1] => 'jakas_wartosc7, [atr_id] => 1), [7] => array( [atr1] => 'jakas_wartosc8, [atr_id] => 1), [8] => array( [atr1] => 'jakas_wartosc9, [atr_id] =>1) )


Jak widac, mamy cztery elementy o atr_id = 15, trzy o atr_id = 1 i dwa o atr_id = 99. Chcę to przerobić tak, żeby tablica wyglądała w ten sposób:

  1. array ( [15] => array ( jakas_wartosc1, jakas_wartosc2, jakas_wartosc3), [99] => array ( jakas_wartosc5, jakas_wartosc6), [1] => array ( jakas_wartosc7, jakas_wartosc8, jakas_wartosc9) )



Czyli chodzi o to, żeby wyłapać MAKSYMALNIE trzy elementy o tym samym atr_id z pierwszej tablicy, pobrac ich "atr1" i na tej podstawie stworzyc kolejny element w drugiej tablicy. Jezeli są dwa elementy o tym samym atr_id to bierzemy tylko te dwa. Jesli jednak jest więcej niż trzy (jak w przykładzie o atr_id=15, bierzemy trzy pierwsze).

Jak to ładnie zrobić?

kontur
za pomoca trzech magicznych instrukcji: for, if i count i niczego wiecej nie trzeba, chyba ze oczekujesz ze ktos napisze Ci gotowca.
jasin
Takie coś powinno zadziałać (ewentualnie drobne błędy trzeba poprawić bo nie spr czy działa).
  1. $tabB = array();
  2. foreach ($tabA as $key => $val)
  3. {
  4. $atr = $val['atr1'];
  5. $id = $val['atr_id'];
  6.  
  7. if (count($tabB[$id]) == 3)
  8. {
  9. continue;
  10. }
  11.  
  12. $tabB[$id][] = $atr;
  13. }
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.