Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konwertowanie tablic (array)
Forum PHP.pl > Forum > PHP
nediam
Witam. Mam maly problem potrzebuje w jakis sposob przrobic taka tablice:

  1. <?php
  2.  
  3. (
  4. [0] => Array
  5. (
  6. [id] => 1
  7. [parent] => 0
  8. [name] => Aparaty Cyfrowe
  9. )
  10.  
  11. [1] => Array
  12. (
  13. [id] => 2
  14. [parent] => 1
  15. [name] => Sony
  16. )
  17.  
  18.  
  19. [2] => Array
  20. (
  21. [id] => 3
  22. [parent] => 1
  23. [name] => Canon
  24. )
  25.  
  26. [3] => Array
  27. (
  28. [id] => 4
  29. [parent] => 3
  30. [name] => 3 Mpx
  31. )
  32.  
  33. [4] => Array
  34. (
  35. [id] => 5
  36. [parent] => 3
  37. [name] => 4 Mpx
  38. )
  39.  
  40. [5] => Array
  41. (
  42. [id] => 6
  43. [parent] => 0
  44. [name] => Kamery Cyfrowe
  45. )
  46.  
  47. [6] => Array
  48. (
  49. [id] => 7
  50. [parent] => 6
  51. [name] => Philips
  52. )
  53.  
  54. )
  55.  
  56. ?>

co mniejwiecej wyglada tak:
Kod
Aparaty Cyfrowe
  Sony
  Canon
    4 Mpx
    3 Mpx
Kamery Cyfrowe
  Philips


na taka:
  1. <?php
  2. (
  3. [Aparaty Cyfrowe] => Array
  4. (
  5. [Sony] => 1
  6. [Canon] => Array
  7. (
  8. [3 Mpx] => 4
  9. [4 Mpx] => 5
  10. )
  11.  
  12. )
  13.  
  14. [Kamery Cyfrowe] => Array
  15. (
  16. [Philips] => 7
  17. )
  18.  
  19. )
  20. ?>

lub podobna smile.gif

ma ktos jakis pomysl ? bo ja nie
sprawa dosyc pilna... sadsmiley02.gif
NuLL
Rekuranecja i podstawy php -nic więcej nie jest potrzebne.

EDIT
  1. <?php
  2.  
  3. function rebuildArray($id,$przeszukiwana){
  4.  
  5. $i=0;
  6.  
  7. $znalezione=array();
  8.  
  9. foreach ($przeszukiwana as $obiekt) {
  10. if(intval($obiekt['parent'])==intval($id))
  11. {
  12. $znalezione[$i]['text']=$obiekt['name'];
  13. $znalezione[$i]['id']=$obiekt['id'];
  14. unset($przeszukiwana[$i]);
  15.  
  16. $childs=rebuildArray($obiekt['id'],$przeszukiwana);
  17. if($childs)
  18. {
  19. $znalezione[$i]['childrens']=$childs;
  20. }
  21. $i++;
  22. }
  23. }
  24. return $znalezione;
  25. }//rebuild
  26.  
  27. rebuildArray(1,$twojatablica);
  28.  
  29. ?>

Przerób to - nic trudnego - robi w 90% to co chcesz.
nediam
Cytat(NuLL @ 2005-08-11 01:14:28)
Rekuranecja i podstawy php -nic więcej nie jest potrzebne.
(...)
Przerób to - nic trudnego - robi w 90% to co chcesz.

Wiem ze tu byla potrzebna rekurencja ale jakos nie moglem sobie z tym poradzic dry.gif

Co do twojej funkcji to wielkie dzieki wlasnie sobie ja przerobilem :*
  1. <?php
  2. function rebuildArray( $id, $przeszukiwana )
  3. {
  4. $znalezione = array();
  5.  
  6. foreach ( $przeszukiwana as $obiekt )
  7. {
  8. if( intval( $obiekt['mnode_pid'] ) == intval( $id ) )
  9. {
  10. $znalezione[$obiekt['mdata_name']] = $obiekt['mnode_id'];
  11. $childs = rebuildArray( $obiekt['mnode_id'], $przeszukiwana );
  12. if( $childs )
  13. {
  14. $znalezione[$obiekt['mdata_name']] = $childs;
  15. }
  16. }
  17. }
  18. return $znalezione;
  19. }
  20. ?>


jeszcze raz wielkie dzieki musze nauczyc sie kozystac z rekurencji winksmiley.jpg
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.