Gå til innhold

foreach av array


Anbefalte innlegg

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?

Lenke til kommentar
Videoannonse
Annonse

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.

Lenke til kommentar
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 av pulse
Lenke til kommentar

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.

?>

Lenke til kommentar
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.

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...