Witam,

Nie wiem juz oco chodzi, i co jest nie tak, w tym kodzie ponizej.
Krotki opis: jest sobie tablica $tablica, w ktorej sa przechowywane wartosci: jako klucz nr wskazujacy na dzieciaka, a jako wartosc indeksu nr opisujacy do kogo nalezy dany dzieciak (wiem wiem, dziwnie to brzmi, ale jest to wycinake wiekszego fragmentu kodu). Jezeli wartosc klucza dla danego indeksu jest = 0 to oznacza ze ten indeks jest rodzicem dla calej nizszej grupy.
Kod
$tablica = Array
(
    1798 => 0,
    1799 => 1798,
    1801 => 1799,
    1813 => 1801,
    1800 => 1798,
    1802 => 0,
    1803 => 1802,
    1804 => 1802,
    1805 => 1804,
    1811 => 1802,
    1812 => 1811,
    1807 => 0,
    1808 => 1807,
    1810 => 1808,
    1814 => 1810,
    1809 => 1807,
    1815 => 1807
);

function takieCos($tab, $search = 0, $rootOnly = 0, $skad = 0, $ktory = 0, $nastepny = 0 )
{
  if ($tmp = array_keys($tab, $search))
  {//1
   foreach ($tmp as $tmpFolder)
   {
     if (array_keys($tab, $tmpFolder))
     { //3
      switch ($rootOnly)
            {
              case 0: $op .= "Opcja ZERO";
                      break;
              case 1: $op .= "<br>rodzic[".$ktory."][".$nastepny++."]=".$tmpFolder."\n";
                      break;
              case 2:
                      if ($skad == 0)
                      {
                          $ktory++;
                          $nastepny = 0;
                          $op .= "<br>";
                      }
                      $op .= "<br>rodzic[".$ktory."][".$nastepny++."]=".$tmpFolder."\n";
                      $op .= takieCos($tab, $tmpFolder, $rootOnly, 1, $ktory, $nastepny++);
                      break;
            }//switch
     }//if 3
     else
          {
            if ($rootOnly != 2)
        $op .= "<br>OPCJA rootOnly != 2";
            else
            {
              $op .= "<br>rodzic[".$ktory."][".$nastepny++."]=".$tmpFolder ."\n";
            }
          }//else if 3
   }//foreach
  }//if 1
    return $op;
}

  echo "Wyswietlam tylko rodzicow:";
  echo takieCos($tablica,0, 1);

  echo "<br><br>Wyswietlam dzieci dla kazdego rodzica:";
  echo takieCos($tablica,0, 2);


I teraz tak, po uruchomieniu i wywloaniu 2 razy tej funkcji otrzymujemy jako wynik:
Kod
Wyswietlam tylko rodzicow:
rodzic[0][0]=1798
rodzic[0][1]=1802
rodzic[0][2]=1807

Wyswietlam dzieci dla kazdego rodzica:

rodzic[1][0]=1798
rodzic[1][1]=1799
rodzic[1][2]=1801
rodzic[1][<FONT color=#ff0000>3</FONT>]=1813
rodzic[1][<FONT color=#ff0000>3</FONT>]=1800

rodzic[2][0]=1802
rodzic[2][1]=1803
rodzic[2][2]=1804
rodzic[2][3]=1805
rodzic[2][4]=1811
rodzic[2][5]=1812

rodzic[3][0]=1807
rodzic[3][1]=1808
rodzic[3][2]=1810
rodzic[3][<FONT color=#ff0000>3</FONT>]=1814
rodzic[3][<FONT color=#ff0000>3</FONT>]=1809
rodzic[3][4]=1815


I teraz moj problem a zarazem niewiedza - dlaczego dla rodzica 1798 indeks sie powtarza (pozycja 3 i 3 - oznaczone na czerwono), i tak samo jest dla rodzica 1807 (pozycja 3 i 3)? Dlaczego w tych przypadkach $nastepny++ nie zwieksza poprawnie swojej wartosci?

Mam u siebie PHP 5.2 i takie cos sie dzieje.

Czy ktos moze mi pomoc wyjasnic w czym jest problem, po prostu chce aby rodzic[][x] x zmienialo sie poprawnie od 0 do x co krok 1, a nie dublowalo wartosci.

Z gory dziekuje za wszelka pomoc, bo juz nie wiem co jest nie tak ;)