Array-Problem

david07

Mitglied
Hi,

habe ein Problem mit einem Array udn komme nicht weiter. Vielleicht kann mir da jemand helfen?

Hier zunächst der Code:

PHP:
 private function merge()
    {
    $arr = $this->object_to_array($this->Items());
    $arr_c = count($arr['menu']);
    $r = "";

    for($i = 0; $i < $arr_c; $i++)
        {
        if ($arr['menu'][$i]['parent'] == 0)
            {
            $r .= "<br>|>";
            $r .= $arr['menu'][$i]['title'];
            }

          elseif ($arr['menu'][$i]['id'] = $arr['menu'][$i]['parent'])
              {
              $r .= "<i> {".$arr['menu'][$i]['title']."} </i>";
              continue;
              }
        $r .= "<|<br>";
        }

    return $r;
    }

Raus kommt:

Code:
|>Schreibtisch<|

|>Navigation<|
{Navigation 1-2} {Navigation 2-2} 
|>Webseiten<|

|>Systemeinstellungen<|
{Systemeinstellungen} {Systemeinstellungen}

Ich benötige es aber so:
Code:
|>Schreibtisch<|

|>Navigation
{Navigation 1-2} {Navigation 2-2} 
<|

|>Webseiten<|

|>Systemeinstellungen
{Systemeinstellungen} {Systemeinstellungen} 
<|

Das Array sieht so aus:

Code:
Array
(
    [menu] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [parent] => 0
                    [icon] => 0
                    [title] => Schreibtisch
                    [ref] => deskt
                )

            [1] => Array
                (
                    [id] => 2
                    [parent] => 0
                    [icon] => 0
                    [title] => Navigation
                    [ref] => navigation
                )

            [2] => Array
                (
                    [id] => 3
                    [parent] => 2
                    [icon] => 0
                    [title] => Navigation 1-2
                    [ref] => navigation
                )

            [3] => Array
                (
                    [id] => 4
                    [parent] => 2
                    [icon] => 0
                    [title] => Navigation 2-2
                    [ref] => navigation
                )

            [4] => Array
                (
                    [id] => 5
                    [parent] => 0
                    [icon] => 0
                    [title] => Webseiten
                    [ref] => page
                )

            [5] => Array
                (
                    [id] => 6
                    [parent] => 0
                    [icon] => 0
                    [title] => Systemeinstellungen
                    [ref] => sys
                )

            [6] => Array
                (
                    [id] => 7
                    [parent] => 6
                    [icon] => 0
                    [title] => Systemeinstellungen
                    [ref] => sys
                )

            [7] => Array
                (
                    [id] => 8
                    [parent] => 6
                    [icon] => 0
                    [title] => Systemeinstellungen
                    [ref] => sys
                )

        )

)

Vielen Dank schonmal!
 
Hi, habs nur mal kurz überflogen

PHP:
 private function merge()
    {
    $arr = $this->object_to_array($this->Items());
    $arr_c = count($arr['menu']);
    $r = "";

    for($i = 0; $i < $arr_c; $i++)
        {
        if ($arr['menu'][$i]['parent'] == 0)
            {
            $r .= "<br>|>";
            $r .= $arr['menu'][$i]['title'];
            continue;
            }

          elseif ($arr['menu'][$i]['id'] = $arr['menu'][$i]['parent'])
              {
              $r .= "<i> {".$arr['menu'][$i]['title']."} </i>";
              continue;
              }
        $r .= "<|<br>";
        }

    return $r;
    }

continue vergessen ?

bzw.
PHP:
 private function merge()
    {
    $arr = $this->object_to_array($this->Items());
    $arr_c = count($arr['menu']);
    $r = "";

    for($i = 0; $i < $arr_c; $i++)
        {
        if ($arr['menu'][$i]['parent'] == 0)
            {
            if($arr['menu'][$i]['id'] != 0) $r .= "<|";
            $r .= "<br>|>";
            $r .= $arr['menu'][$i]['title'];
            continue;
            }

          elseif ($arr['menu'][$i]['id'] = $arr['menu'][$i]['parent'])
              {
              $r .= "<i> {".$arr['menu'][$i]['title']."} </i>";
              }
        }

    return $r;
    }
sry das ich nicht mehr Zeit hab zum nachschauen , aber das hat mich grad als erstes angesprungen^^
 
Zuletzt bearbeitet:
PHP:
elseif ($arr['menu'][$i]['id'] = $arr['menu'][$i]['parent'])
Was macht diese Zeile? Sie weisst der ID des aktuallen Eintrag den Wert des parents zu. Auch mit einem == anstelle des = ergibt sich nichts sinnvolles, da du prüfen würdest ob der parent gleich der ID desselben Eintrages ist. Also Parent von sich selber
 
Hi,

jo Du hast recht

Habe gerade beim Versuch mit geänderten continous die Idee gehhabt die Submenu-Elemente auszulagern in eine andere Fnktion. Ist zwar nicht so schön, weil noch emhr schleifen, aber es funktioniert!!

PHP:
 private function sub($id)
    {
    $arr = $this->object_to_array($this->Items());
    $arr_c = count($arr['menu']);
    $r = "";
    for($i = 0; $i < $arr_c; $i++)
        {
        if ($arr['menu'][$i]['parent'] == $id)
            $r .= $this->_item[0].$arr['menu'][$i]['title'].$this->_item[1];
        }
    if ($r != "")
        return $this->_level[0].$r.$this->_level[1];
    }

 private function merge()
    {
    $arr = $this->object_to_array($this->Items());
    $arr_c = count($arr['menu']);
    $r = "";

    for($i = 0; $i < $arr_c; $i++)
        {
        if ($arr['menu'][$i]['parent'] == 0)
            {
            $r .= $this->_item[0];
            $r .= $this->href_mod($arr['menu'][$i]['ref']).$arr['menu'][$i]['title'].$this->_a;
            $r .= $this->sub($arr['menu'][$i]['id']);
            $r .= $this->_item[1];
            }
        }

    return $this->_level[0].$r.$this->_level[1];
    }

Dabnke euch für die schnellen Antworten!
 
Zurück