Witam.

Mam tabice składającą się z dużej ilości kategorii i podkategorii.

Zastanawiam się, jak najwydajniej ją rozpisać w "słupku", żebym mógł z tego zrobić listę rozwijaną <SELECT>

  1. <?php
  2. $elements=array (
  3. '1_760' => array (
  4. 'name' => 'NAZWAAAAA KATEGRI',
  5. ),
  6. '1_1180' => array (
  7. 'name' => 'PRÓBNA 222',
  8. 'elements' => array (
  9. '1180_1181' => 'PRÓBNA 2 PODKATT',
  10. ),
  11. ),
  12. '1_1182' => array (
  13. 'name' => 'PRÓBNA 333',
  14. 'elements' => array (
  15. '1182_1183' => array (
  16. 'name' => 'PRÓBNA 333 PODKAT1',
  17. 'elements' => array (
  18. '1182_1183_1188' => 'OOOOOOOOOO',
  19. '1182_1183_1187' => 'PPPPPPPPP',
  20. '1182_1183_1184' => array (
  21. 'name' => 'PRÓBNA 33 PODKAT 2',
  22. 'elements' => array (
  23. '1182_1183_1184_1186' => 'PRÓBNA 3 PODKAT 3',
  24. '1182_1183_1184_1185' => 'PRÓBNA 3333 PODKAT 4',
  25. ),
  26. ),
  27. '1182_1183_1189' => 'PRÓBNA 34 PODKAT 2',
  28. '1182_1183_1190' => array (
  29. 'name' => 'PRÓBNA 35',
  30. 'elements' => array (
  31. '1182_1183_1190_1191' => 'PRÓBNA 36',
  32. ),
  33. ),
  34. ),
  35. ),
  36. ),
  37. ),
  38.  );
  39. ?>


teraz robie to na zasadzie

  1. <?php
  2. while (list($item,$key) = each($elements)) {
  3. if (is_array($key)) {
  4.  
  5. while (list($item,$key) = each($elements)) {
  6. if (is_array($key)) {
  7.  //ITD AŻ DO 4 POZIOMU
  8. } else { //DRUKUJE NAZWE I ID }
  9. } else { //DRUKUJE NAZWE I ID }
  10. }
  11. ?>


Czy jest jakiś inny sposób na rozpisanie tego? Coś bardziej wydajnego?

Plik z tablicą jest dosyć duży.. ma ponad 1000 linijek..
a potrzebuje wykonac ten kod 4 razy, bo mam 4 pola <SELECT>

Bardzo proszę o podpowiedź.
Będe wdzięczny za wszelkie wypowiedzi.

----- EDIT ---
Używam WHILE() zamiast FOREACH() ponieważ to drugie podobno robi w paięci dodatkową druga kopie tablicy..
Może jest coś podobnego do print_r();co mobgłoby szybko i sprawnie to zalatwić?