pulse Skrevet 15. september 2007 Skrevet 15. september 2007 Hei, jeg har ett array som ser slik ut: Klikk for å se/fjerne innholdet nedenfor Array ( [0] => Array ( [id] => 1 [subid] => 0 [content] = "Grunn nivå" ) [1] => Array ( [id] => 2 [subid] => 0 [content] => "Også grunn nivå" ) [2] => Array ( [id] => 3 [subid] = 4 [content] "Nivå 3" ) [3] => Array ( [id] => 4 [subid] => 1 [content] => "Nivå 2" ) ) Dette skal da formateres ut noe alla dette: Grunn nivå - Nivå 2 -- Nivå 3 Også grunn nivå Listen skal kunne innholde "evig" sub nivåer, og arrayet er ikke sortert på noen måte. Noen som har ideer som hvordan jeg kan løse dette?
Runar Skrevet 15. september 2007 Skrevet 15. september 2007 Så det som er i "content" forandres, og er ikke alltid "grunn nivå"? Det du skriver du vil og koden din gir ikke mening i mine øyne. Du må også fikse feilene du har i koden din. Noen steder har du bare skrevet = i stedet for =>, og andre steder har du ikke skrevet noen ting.
pulse Skrevet 15. september 2007 Forfatter Skrevet 15. september 2007 (endret) Så det som er i "content" forandres, og er ikke alltid "grunn nivå"? Det du skriver du vil og koden din gir ikke mening i mine øyne. Du må også fikse feilene du har i koden din. Noen steder har du bare skrevet = i stedet for =>, og andre steder har du ikke skrevet noen ting. 9502867[/snapback] Ah, selve arrayet skrev jeg har for hånd (Så kan hende det mangler litt, men det burde gi mening). Det skal brues til og lage ett "tree-view" av data i ett array. Ett bedre eksempel: Grandiosa // Ett ferdig matprodukt, som har en innholdsliste - Ost // Ost har da en subid som er samme som id til Grandiosa - Bunn // Bunnen har igjen ingredienser og har samme subid som Grandiosa sin id -- Mel // Mel har samme subid som Bunn sin id -- Vann // Vann har også samme subid som Bunn sin id -- Flere bunn ingredienser.... - Skinke // Skinke har samme subid som Grandiosa sin id. Big1 // Neste produkt i listen som også har sine ingredienser. - Innhold.... Kanskje dette gjorde det litt mer forklart? Antall nivåer skal ikke har noen form for begrensninger. og Arrayet inneholder da en masse sub arrays som inneholder følgende strenger: [id] [subid] og [content] hvorav content er f.eks Grandiosa eller Vann. Edit: Dersom det var bestemt at det kun skulle være mulighet for tre sub nivåer, kunne jeg fått det til med tre foreach setninger inni hverandre (sikkert ikke en god løsning). Problemet dukker først opp når jeg ønsker og fjerne begresningen på antall nivåer. Endret 15. september 2007 av pulse
pulse Skrevet 15. september 2007 Forfatter Skrevet 15. september 2007 Her er arrayet formatert riktig og inneholder litt .php: Klikk for å se/fjerne innholdet nedenfor <?php $mittarray = Array ( "0" => Array ( "id" => "1", "subid" => "0", "tekst" => "Grandiosa" ), "1" => Array ( "id" => "2", "subid" => "3", "tekst" => "Vann" ), "2" => Array ( "id" => "3", "subid" => "1", "tekst" => "Bunn" ), "3" => Array ( "id" => "4", "subid" => "1", "tekst" => "Ost" ), "4" => Array ( "id" => "5", "subid" => "0", "tekst" => "Big 1" ), "5" => Array ( "id" => "6", "subid" => "3", "tekst" => "Mel" ) ); echo '<pre>'; print_r($mittarray); echo '</pre>'; // Bytte ut neste linje med .php kode som genererer dette ut fra arrayet: echo 'Grandiosa<br>- Bunn<br>-- Mel<br>-- Vann<br>- Ost<br>Big 1'; // Det skal ikke være begrensning på antall sub nivåer. ?>
itsmebth Skrevet 16. september 2007 Skrevet 16. september 2007 (endret) PHP <?phpfunction printarray($arr, $level = 0){ foreach($arr as $item){ if(is_array($item)) printarray($item, $level+1); else echo str_repeat('-', $level) . $item; } } ?> Noe sånt? Endret 16. september 2007 av itsmebth
pulse Skrevet 16. september 2007 Forfatter Skrevet 16. september 2007 Noe sånt? 9504111[/snapback] Var ikke helt det jeg mente heller. Har sitte en stund og fikla litt og så langt kommet frem til at jeg kanskje må endre litt struktur på arrayet (like greit egentlig). Dersom jeg kan lage en funksjon som så plasserer dataen riktig, så burde det ikke være noe problem og printe den ut i etterkant. "Nesten" løst: Klikk for å se/fjerne innholdet nedenfor $mittarray = Array ( "1" => Array ( "subid" => "0", "tekst" => "Grandiosa" ), "2" => Array ( "subid" => "3", "tekst" => "Vann" ), "3" => Array ( "subid" => "1", "tekst" => "Bunn" ), "4" => Array ( "subid" => "1", "tekst" => "Ost" ), "5" => Array ( "subid" => "0", "tekst" => "Big 1" ), "6" => Array ( "subid" => "3", "tekst" => "Mel" ) ); function find_position($needle, $haystack, $input, $aid) { global $mittarray; foreach ($haystack as $key => $value) { if ($needle == $key) { $mittarray[$input[subid]][$aid] = $value; } if (is_array($value)) { find_position($needle, $value, $input, $aid); } } } foreach ($mittarray AS $key => $value) { if ($value[subid] != "0") { find_position($key, $mittarray, $value, $key); unset($mittarray[$key]); } } Men nå er det kvelden. Hvis det fremdeles er litt uklart hva jeg vil beklager jeg dette. Er veldig trøtt og sliten.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå