Avatar billede bearhugx Nybegynder
18. januar 2004 - 22:59 Der er 16 kommentarer og
2 løsninger

oprette multi-dim array

Hejsa eksperter ...

er lige blevet helt blank ang. noget syntaks...

Jeg har $antalRaekker, som jeg skal gemme for hver ugedag, dvs en 7 x $antalRaekker array...

hvordan laves sådan en...

Jeg ved godt, hvordan jeg derefter bruger det
  ( $minArr[ugedag][raekke] )
men hvordan får jeg oprettet den skide array...
Avatar billede bearhugx Nybegynder
18. januar 2004 - 23:00 #1
ok kan man gøre det sådan at alle elementer fra udgangspunkt har en bestemt værdi?
Avatar billede bearhugx Nybegynder
18. januar 2004 - 23:00 #2
ok => og
Avatar billede nicklasb Nybegynder
18. januar 2004 - 23:07 #3
fatter ikke lige problemet? Hvad er det du ikke kan lave?

Er det ikk' bare noget lignende;

<pre>
<?php
$ti = array(
  1 => array('række 1', 'række 2'),
  2 => array('række 1', 'række 2', 'række 3', 'række 4', 'række 5'),
  3 => array('række 1', 'række 2', 'række 3', 'række 4'),
  4 => array('række 1', 'række 2', 'række 3', 'række 4'),
  5 => array('række 1'),
  6 => array('række 1', 'række 2', 'række 3', 'række 4', 'række 5', 'række 6'),
  7 => array('række 1')
            );

print_r($ti);
?>
</pre>

du mener?
Avatar billede nicklasb Nybegynder
18. januar 2004 - 23:09 #4
du kan også senere defiere dem..
altså noget lignende;

$ti = array();
$ti[1] = array('række 1', 'række 2', 'række 3', 'række 4');

Men ved som sagt ikke om jeg er langt ude?!
Avatar billede detox Nybegynder
18. januar 2004 - 23:11 #5
Ja, du kan gøre det på mange måder, et andet eks.:

$multi = array('man',',tir','ons','tor','fre','lor','son');
$multi['man'][] = 3;
$multi['man'][] = 5;
$multi['man'][] = 23;
// osv...
Avatar billede detox Nybegynder
18. januar 2004 - 23:13 #6
Næ, vel nærmere sådan her:

$multi['man'][] = 3;
$multi['man'][] = 5;
$multi['man'][] = 23;
$multi['tir'][] = 17;
$multi['tir'][] = 46;
$multi['ons'][] = 12;
// osv...
print_r($multi);
Avatar billede bearhugx Nybegynder
18. januar 2004 - 23:17 #7
kan jeg bare sige

$skema[1][1] = "værdi"?

og så er $skema ligepludselig oprettet ?
Avatar billede bearhugx Nybegynder
18. januar 2004 - 23:20 #8
vil følgende kode virke...

for($ugedag=0;$ugedag<7;++$ugedag) {
  for($raekke=0; $raekke<$skema_stoerrelse; ++$raekke) {
  $skema[$ugedag][$raekke] = "lukket";
  }
}

og jeg så derefter har et 7 x $skema_stoerrelse array til rådighed via $skema ?

( $skema_stoerrelse er antallet af rækker for hver dag... )
Avatar billede detox Nybegynder
18. januar 2004 - 23:21 #9
bearhugx -> Det vil jeg mene, ja.
Avatar billede detox Nybegynder
18. januar 2004 - 23:24 #10
Eller mere præcist:

for($ugedag=0;$ugedag<7;$ugedag++) {
  for($raekke=0; $raekke<$skema_stoerrelse;$raekke++) {
  $skema[$ugedag][$raekke] = "lukket";
  }
}
Avatar billede Slettet bruger
18. januar 2004 - 23:28 #11
detox: Der er da ikke noget galt med ++$ugedag - Det hedder pre-increment. Der er ingen grund til at lave det om til post-increment i dette tilfælde.

Bearhuqx: Purister vil sige, at du skal lige klargøre dit array først. Dvs. med $skema=array(); før din for-blok.
Avatar billede bearhugx Nybegynder
18. januar 2004 - 23:31 #12
sandbox >> mente hellerikke at der skulle være noget galt i en pre-inc... Vil dog lige tage det med klargøring af arrayet til efterretning :-)

jeg afprøver koden lige om lidt :-) - så håber jeg at det virker :-)
Avatar billede detox Nybegynder
18. januar 2004 - 23:37 #13
sandbox -> Aha, det har jeg aldrig brugt ;o)
bearhugx -> Du kunne osse bruge array_fill:

for ($ugedag=0;$ugedag<7;$ugedag++) {
  $skema[$ugedag] = array_fill(0,$skema_stoerrelse,"lukket");
}
Avatar billede bearhugx Nybegynder
18. januar 2004 - 23:37 #14
juhuuu ... det virker....

nicklasb, detox og sandbox - vil i ikke lige alle komme med et svar...

den kode som er brugt

$skema = array();
for($ugedag=0;$ugedag<7;++$ugedag) {
  for($raekke=0; $raekke<$skema_stoerrelse; ++$raekke) {
    $skema[$ugedag][$raekke] = "lukket";
  }
}
Avatar billede bearhugx Nybegynder
18. januar 2004 - 23:39 #15
detox ... vil array_fill være hurtigere end den brugte for-løkke ?
Avatar billede Slettet bruger
18. januar 2004 - 23:41 #16
Jeg skal ikke have point i dit spørgsmål for at lære detox om preincrement.

Og den $skema=array(); er ikke strengt nødvendig. Det er bare for at formilde de gamle C-programmører, der vil have, at man initierer alle variable.
Avatar billede detox Nybegynder
18. januar 2004 - 23:44 #17
Mon ikke array_fill() er lidt hurtigere, det er hvert fald kortere kode.
Avatar billede nicklasb Nybegynder
19. januar 2004 - 06:56 #18
hvorfor ikke bare tage det med, nu du har en klar mulighed for det?
Kan godt være det er ridser efter at have kodet c.. Men det er da klart at fortrække også for dig selv, at du kan se hvor "det sker", så du allerede DER kan tilføje en anden gang.. Du kan jo bare sætte det ind imellem dine forløkker..

Altså noget lignende;

$skema = array();
for($ugedag=0;$ugedag<7;++$ugedag) {
  $skema[$ugedag] = array();
  for($raekke=0; $raekke<$skema_stoerrelse; ++$raekke) {
    $skema[$ugedag][$raekke] = "lukket";
  }
}

?!
Og om array_fill() er hurtigere end at sætte det lig, ved jeg heller ikke.. Men et oplagt emne, til mit og dea_pg's næste tidstest..
Har faktisk aldrig brugt array_fill() i praksis selv, så kan ikke umidbart uden at have læst manualen se den store gevinst i det? Men nok også noget lævn / efterligning af en c-komando (ikke utænkeligt.. :)
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