Christian: Mehrdimensionale Arrays

Hi,
ich bin gerade dabei eine Bookmark funktion zu schreiben bei der es möglich sein soll Pfade einzufügen für eine bessere Übersichtlichkeit.
Jetz ist folgendes Problem aufgetreten:

ich habe ein Array das so aussieht:

array
   (
     [0] = verz0
     [1] = verz1
     [2] = verz2
   )

dieses array versuche ich in folgendes umzuwandeln:

array
   (
    [verz0] => Array
        (
            [verz1] => Array
                (
                    [verz2] =>
                )

)
   )

dabei ist noch zu sagen, daß die Anzahl und die Namen natürlich variabel sind.

Dies versuche ich so:

$ct = count($path)-1; // $path ist das oben erste Array
$ct_tmp = $ct;

// Ordner nur eine Ebene tief
if($ct == 0) { $tmp[$path[$ct_tmp]] = ""; }

// Ordner mehrere Ebenen tief
else
   {
   while($ct_tmp != -1)
      {
      // Erster durchlauf / letzter Ordner
      if($ct_tmp == $ct) { $tmp2 = array( "$path[$ct_tmp]" => ""); }

// Zwishendurchlauf
      else if($ct_tmp != 0)
         {
         $tmp2["$path[$ct_tmp]"] = $tmp2;
         }

// letzter Durchlauf
      else
         {
         $tmp["$path[$ct_tmp]"] = $tmp2; // hier werden beide Arrays zusammengeführt $tmp und $tmp2
         }
      $ct_tmp--;
      }
   }

wenn ich nun aber print_r($tmp) eingebe bekomme ich folgende Ausgabe:

Array
(
    [test] =>            // Pfade ohne Tiefe
    [sdhfgsdhkgf] =>             // Pfade ohne Tiefe
    [test3] =>             // Pfade ohne Tiefe
    [verz0] => Array
        (
            [verz2] =>           // hier ist der Hund begraben warum verz2 ??????
            [verz1] => Array
                (
                    [verz2] =>
                )

)

)

  1. Ich hab das ganze mal mit 6 Pfaden für euch:

    array
       (
         [0] = verz0
         [1] = verz1
         [2] = verz2
         [3] = verz3
         [4] = verz4
         [5] = verz5
       )

    Ausgabe :

    Array
    (
        [verz0] => Array
            (
                [verz5] =>
                [verz4] => Array
                    (
                        [verz5] =>
                    )

    [verz3] => Array
                    (
                        [verz5] =>
                        [verz4] => Array
                            (
                                [verz5] =>
                            )

    )

    [verz2] => Array
                    (
                        [verz5] =>
                        [verz4] => Array
                            (
                                [verz5] =>
                            )

    [verz3] => Array
                            (
                                [verz5] =>
                                [verz4] => Array
                                    (
                                        [verz5] =>
                                    )

    )

    )

    [verz1] => Array
                    (
                        [verz5] =>
                        [verz4] => Array
                            (
                                [verz5] =>
                            )

    [verz3] => Array
                            (
                                [verz5] =>
                                [verz4] => Array
                                    (
                                        [verz5] =>
                                    )

    )

    [verz2] => Array
                            (
                                [verz5] =>
                                [verz4] => Array
                                    (
                                        [verz5] =>
                                    )

    [verz3] => Array
                                    (
                                        [verz5] =>
                                        [verz4] => Array
                                            (
                                                [verz5] =>
                                            )

    )

    )

    )

    )

    )

    so ich denke jetz ist das ganze verständlicher oder auch nicht.

    1. OK ich habs selber rausgefunden:

      $ct = count($path)-1;
      $ct_tmp = $ct;

      // Ordner nur eine Ebene tief
      if($ct == 0) { $tmp[$path[$ct_tmp]] = ""; }

      // Ordner mehrere Ebenen tief
      else
         {
         while($ct_tmp != -1)
            {
            // Erster durchlauf / letzter Ordner
            if($ct_tmp == $ct) { $tmp2 = array( "$path[$ct_tmp]" => ""); }

      // Zwishendurchlauf
            else if($ct_tmp != 0)
               {
               $tmp2["$path[$ct_tmp]"] = $tmp2;
               unset($tmp2[$path[$ct_tmp+1]]);  // <--- !!!!!!!!!!!!!!!!
               }

      // letzter durchlauf
            else
               {
               $tmp["$path[$ct_tmp]"] = $tmp2;
               }
            $ct_tmp--;
            }
         }