Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]sortowanie do jedej tablicy
Forum PHP.pl > Forum > Przedszkole
presscot
Witam!!
Posiadam dwie tablice z obiektami. Całą tablice dzial chciałbym umieścić w tablicy links w ten sposób, aby w przypadku kiedy sciezka się zgadza to wrzucam obiekt do ->next i jesli do sciezki z tego obiektu pasuje jakas inna z tablicy dzial to tez przydzielam do next aktualnego obiektu itd.

  1. <?php
  2. class Test {
  3.  
  4. var $next=array();
  5. var $id;
  6. function show() {
  7. return explode("/", $this->link) ;
  8. }
  9. }
  10.  
  11.  
  12. $dzial=array();
  13. $links=array();
  14.  
  15. $links[0]= new Test;
  16. $links[0]->link="1";
  17. $dzial[0] = new Test;
  18. $dzial[0]->link="1/2";
  19. $dzial[0]->id="1";
  20. $dzial[1] = new Test;
  21. $dzial[1]->link="1/2/4";
  22. $dzial[1]->id="2";
  23. $dzial[2] = new Test;
  24. $dzial[2]->link="1/2/4/5";
  25. $dzial[2]->id="3";
  26. $dzial[3] = new Test;
  27. $dzial[3]->link="1/3";
  28. $dzial[3]->id="4";
  29.  
  30. function sortspecial($hh,$ff){
  31. global $dzial;
  32. for($g=0;$g<count($dzial);$g++){
  33.  
  34. $nadrzedne=$hh->show();
  35. $podrzedne=$dzial[$g]->show();
  36. if($nadrzedne[$ff]==$podrzedne[$ff]) {
  37.  
  38. if(!isset($podrzedne[$ff+2]))
  39. array_push($hh->next, sortspecial($dzial[$g],$ff+1));
  40. }
  41. }
  42.  
  43. return $hh;
  44. }
  45.  
  46. for($l=0;$l<count($links);$l++){
  47.  
  48. for($h=0;$h<count($dzial);$h++){
  49. $nadrzedne=$links[$l]->show();
  50. $podrzedne=$dzial[$h]->show();
  51.  
  52. if($nadrzedne[0]==$podrzedne[0]) {
  53. if(!isset($podrzedne[2]))
  54. array_push($links[$l]->next, sortspecial($dzial[$h],1));
  55. }
  56. }
  57. }
  58.  
  59.  
  60. $testa=$links[0]->next;
  61. $testb=$testa[0]->next;
  62. echo("pierwszy: ".$testa[1]->id."<br> drugi: ".$testb[0]->id);
  63. ?>


A oto to co udało mi się wymyśleć przez cały dzien:P
crackcomm
Nic nie zrozumiałem : p
Spróbuj wytłumaczyc jeszcze raz to spróbuję Ci pomóc.
presscot
No jak mówiłem cały dzien nad tym myśle tongue.gif i juz nie mam siły napisać sensownego postu na forum winksmiley.jpg

Najlepiej zajrzeć w kod i bedzie wszytsko wiadomo smile.gif Niestety to co sam napisałem nie działa:P

Więc tak:
-Mam dwie tablice: w tablicy links mam obiekty które w -> show() posiadają jedną tablice. Tablica zawiera obiekty które posiadają w -> show() wiecej niz jedną tablice
-tablice w ->show() to sciezka gdzie ma być umieszczony ten obiekt.

-np $links[0]->show()[0] // bo tylko tablica 0 istnieje
$dzial[n]->show()[0] // zero bo sprawdzam czy pierwsza tablica jest taka sama tongue.gif jesli tak to musze sie jeszcze dowiedziec czy tablica 2 jest okreslona czy nie tongue.gifP poniewaz ostania tablica to tak jakby adres pliku a wsztskie poprzednie to tak jakby katalogi tongue.gif

-jesli wszytsko jest ok to cały ten obiekt dodaje do tablicy ->next
-następnie sprawdzam czy obiekt który przed chwilką dodałem czy do niego nie mogę przyporządkować kolejnych obiektów z tablicy dzial
-itd
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.