Avatar billede heyn Nybegynder
16. december 2005 - 12:47 Der er 1 løsning

Anvendelse af next, prev, current og end.

Hej alle. Et lille julespørgsmål.

Jeg har brug for at anvende de i titlen nævnte funktioner i forbindelse med flerdimentionelle arrays. Jeg lavede en lille test. Jeg ved godt at man faktisk taler om et array inde i et andet array når det er flerdimentionelt:
$arr['a1']['b1'] = 'post 1.1';
$arr['a1']['b2'] = 'post 1.2';
$arr['a2']['b1'] = 'post 2.1';
$arr['a2']['b2'] = 'post 2.2';
I den virkelige verden kan jeg ikke med sikkerhed sige hvor mange poster arrayet indeholder. Det samme gør sig gældende for navnet på nøgleværdier.
print_r(array_keys($arr)) viser kun a-nøgerne. Alligevel viser print_r($arr) hele indholdet. Hvorfor?
Det egentlige problem er: Jeg ønsker at gennemløbe hele arrayet på nogenlnde følgende vis:
$plads = 0;
do{
echo "Dette er plads nr. ".$plads."<br>\n"; $plads++;
}
While(next($arr));
Dette giver kun plads 0 og 1.
Hvordan får jeg while-løkken til at gennemløbe alle pladser?
Tilsvarende: Hvis arraypointeren peger på arr['a2']['b1'] hvordan skal jeg så anvende prev() således at pointeren kommer til at pege på $arr['a1']['b2']?

Med venlig hilsen og god jul fra Christian
Avatar billede heyn Nybegynder
26. januar 2006 - 09:05 #1
Har endelig selv løst problemet.
Der er øjensynlig kun den hårde vej. At lave et nyt array $new_arr.

$new_arr = array;
$i = 0;
foreach($arr as &$a){
  foreach($a as &$b){
      $new_arr[$i] = $b;
      $i++;
  }
}

$new_arr indeholder referenceværdier til $arr;
I $new_arr vil $new_arr[1] = $arr['a1']['b2'] og $new_arr[2] = $arr['a2']['b1'].
man kan nu anvende prev, next etc. på $new_arr.

Mvh Christian.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester