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...