Avatar billede thomaxz Nybegynder
24. august 2006 - 12:54 Der er 9 kommentarer og
1 løsning

array, dynamisk, 2 diemseionelt, hvordan?

Jeg har brug for en simpel! måde i php til at lave dynamiske array som gerne må være 2 dimestion.

Jeg er ved at prøve på at lave et kortspil.

Der er 8 bunker og i hver de af bunker kan der være en del kort, som ikke vides på forhånd, også fordi bruge flytter korten fra bunke til bunke.

hvordan kan jeg lave en array til det og hvordan læser jeg fra det.

Har prøevet at kigge på http://dk.php.net/manual/da/function.array.php

men synes der mangler en hel del forklaringer.
Avatar billede gizmo-gizmo Nybegynder
24. august 2006 - 13:21 #1
Hvad med:

$kort = array(
              'bunke1' => array('5h','8s','2c'),
              'bunke2' => array('10h','3c')
      );

psv.


Så kan du f.eks. finde alle kortene fra bunke 1 ved at sige:

foreach($kort['bunke1'] as $val)
{
  echo $val.'-';
}

Eller tilføje et kort til bunke 2 ved at sige:

$kort['bunke2'][] = 'Qc';
Avatar billede gizmo-gizmo Nybegynder
24. august 2006 - 13:23 #2
Nogle gange kan det være en smule svært at overskue hvad dit store multiarray består af, så kan du skrive:

echo "<pre>";
print_r($kort);
echo "</pre>";

Så du præcist kan se hvad der er i det.
Avatar billede thomaxz Nybegynder
24. august 2006 - 13:29 #3
Tjoh, men nu tænke jeg lidt dynamisk, sålede har jeg en varibel der hedder bunke, som bestemmer i hvilken bunke kortet skal være.

har prøve lidt forskellige løsning men ser ikke ud til at virke.

$kort=array(array());
$kort[$bunke[$antalkort[$bunke]]]="H$xtel";

$kort[1,2]="H12";

$kort[bunkeværdi,stackværdi]="H";
Avatar billede thomaxz Nybegynder
24. august 2006 - 13:34 #4
Array
(
    [0] => Array
        (
        )

    [7] => Array
        (
            [1] => H1
        )

    [1] => Array
        (
            [1] => H2
        )

    [8] => Array
        (
            [1] => H3
            [2] => H4
            [3] => H7
            [4] => H9
            [5] => H10
        )

    [4] => Array
        (
            [1] => H5
        )

    [2] => Array
        (
            [1] => H6
            [2] => H11
        )

    [6] => Array
        (
            [1] => H8
            [2] => H12
            [3] => H13
        )

)

Nu ser det ud som om det er løst,        

$tmp=$antalkort[$bunke];
echo("Tmp: $tmp");
$kort[$bunke][$tmp]="H$xtel";

pre hjælper til at gøre array overskuleigt, tak.
Avatar billede gizmo-gizmo Nybegynder
24. august 2006 - 13:46 #5
Godt at det virker :-)

Hvis jeg skulle dele et helt dæk ud på 8 forskellige bunker ville jeg gøre noget i retning af:

foreach(array('H','S','C','D') as $pref) {
  for($i=1; $i<=13; $i++)
  {
    $kort[rand(1,8)][]=$pref.$i;
  }
}

echo "<pre>";
print_r($kort);
echo "</pre>";
Avatar billede thomaxz Nybegynder
24. august 2006 - 14:04 #6
Tak ,lgie en ting til.

Nu når jeg flytter kortne fra bunke til bunke, hvordan sletter jeg den oprindelige værdi?
Avatar billede gizmo-gizmo Nybegynder
24. august 2006 - 14:11 #7
unset($kort[bunke][nøgle]);
Avatar billede thomaxz Nybegynder
24. august 2006 - 14:14 #8
Mange tak.

Læg et svar hvis du vil have poitnes.
Avatar billede gizmo-gizmo Nybegynder
24. august 2006 - 14:25 #9
Yes, np :o)
Avatar billede gizmo-gizmo Nybegynder
24. august 2006 - 14:30 #10
Du skal dog lige være påmærksom på at når du unsetter et element i et array, så re-arrangere den ikke nøglerne. Altså hvis du har:
bunke1=
[0]=H1
[1]=H2
[2]=H3
Og så sletter bunke1[0], så vil H2 og H3 stadig have nøglerne 1 og 2, dvs. hvis du en helt masse gange sletter og tilføjer på den måde til et array, så vil nøglerne lige pludselig være meget høje.
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