Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]rekurencyjnie do końca wielowymiarowych tabli
Mappet
post 4.05.2006, 12:20:40
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 10.06.2004

Ostrzeżenie: (0%)
-----


Witam!

  1. <?
  2. $arr[0]['lev'] = '1';
  3. $arr[0]['name'] = 'Wartosc 1';
  4. $arr[1][0]['lev'] = '1';
  5. $arr[1][0]['name'] = 'Wartosc 2';
  6. $arr[2][0][0]['lev'] = '2';
  7. $arr[2][0][0]['name'] = 'Wartosc 2';
  8. $arr[3]['lev'] = '4';
  9. $arr[3]['name'] = 'Wartosc 2';
  10. ?>


Jak widać wymieszane tablice wielowymiarowe z jednowymiarowymi.
Teraz chciałem zmusić kod do dostania się z każdych wartości tej zmiennej.
Bo kod nie wie ile jest poziomów tych tablic. Tu jest do dwóch ale może być przecież aż do 5 czyli do pięciowymiarowej tablicy.
Zwykła pętla raczej tu nic nie da... myślałem na rekurencją i aby sprawdzała czy podana wartość jest jako tablica, jeżeli jest leci dalej aż do momentu gdy wartość przestaje być tablicą...

  1. <?
  2. function level($level,&$arr=false){
  3. if($arr == false){
  4. $arr[0]['lev'] = '1';
  5. $arr[0]['name'] = 'Wartosc 1';
  6. $arr[1][0]['lev'] = '1';
  7. $arr[1][0]['name'] = 'Wartosc 2';
  8. $arr[2][0][0]['lev'] = '2';
  9. $arr[2][0][0]['name'] = 'Wartosc 2';
  10. $arr[3]['lev'] = '4';
  11. $arr[3]['name'] = 'Wartosc 2';
  12. }
  13.  
  14.  
  15. foreach($arr as $k => $v){
  16.  
  17. if(is_array($arr[$k]) && is_int($k)){
  18. level($level,$arr[$k]);
  19.  
  20. }else{
  21. if($level == $arr[$k]['lev']){
  22. $result = $arr[$k];
  23. }
  24. }
  25.  
  26.  
  27. }
  28. }
  29. ?>


Całe to przeszukanie ma na celu dotarcie do warunku
  1. <?
  2. if($level == $arr[$k]['lev']){
  3. ?>

a następnie przypisanie do zmiennej $result = $arr[$k] łącznie z wymiarem tablicy...


--------------------
Pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:31