Avatar billede mrfunder Nybegynder
06. april 2007 - 16:31 Der er 4 kommentarer

In array multidimensional array problemer

Hej eksperter :-)

Jeg har problemer med at lave in_array i et multidimensionelt array.

<?php
$harbor = array(
        array(344, 102, 1, "København, Danmark"),
        array(230, 75, 2, "Nuuk, Grønland"),
        array(321, 110, 3, "London, England"),
        array(347, 110, 4, "Berlin, Tyskland"),
        array(363, 111, 5, "Warszawa, Polen"),
        array(355, 90, 6, "Stockholm, Sverige"),
        array(343, 88, 7, "Oslo, Norge"),
        array(370, 83, 8, "Helsinki, Finland"),
        array(328, 121, 9, "Paris, Frankrig"),
        array(171, 130, 10, "Ottawa, Canada"),
        array(168, 150, 11, "Washington D.C., USA")
        );

$getBoats = mysql_query("SELECT `name`,`pos`,`status` FROM `boats` WHERE `ownership` = '1'") or die(mysql_error());
    if(mysql_num_rows($getBoats)) {   
        while($row_boats = mysql_fetch_assoc($getBoats)) {
        $myboats[] = array('pos' => $row_boats[pos], 'status' => $row_boats[status], 'name' => $row_boats[name]);
        }
    }

foreach($harbor as $harborposition) {
    list($cor_X, $cor_y, $position, $name) = $harborposition;
    if(in_array($position, $myboats)) {
    $type = $myboats[status];
    $name = $myboats[name];
    } else {
    $type = 3;
    }
        print "$position, $type, $name<br />";
}
?>

---------------------------------------------------------
Mit script returnere:

1, 3, København, Danmark
2, 3, Nuuk, Grønland
3, 3, London, England
4, 3, Berlin, Tyskland
5, 3, Warszawa, Polen
6, 3, Stockholm, Sverige
7, 3, Oslo, Norge
8, 3, Helsinki, Finland
9, 3, Paris, Frankrig
10, 3, Ottawa, Canada
11, 3, Washington D.C., USA

og virkede det efter hensigten skulle det have returneret:

1, 2, Seastar
2, 3, Nuuk, Grønland
3, 3, London, England
4, 3, Berlin, Tyskland
5, 1, Maren Louise
6, 3, Stockholm, Sverige
7, 3, Oslo, Norge
8, 3, Helsinki, Finland
9, 3, Paris, Frankrig
10, 3, Ottawa, Canada
11, 3, Washington D.C., USA
Avatar billede mrfunder Nybegynder
06. april 2007 - 16:33 #1
Mit array ser således ud:

Array
(
    [0] => Array
        (
            [pos] => 1
            [status] => 2
            [name] => Seastar
        )

    [1] => Array
        (
            [pos] => 5
            [status] => 1
            [name] => Maren Louise
        )

)
Avatar billede 7th Praktikant
06. april 2007 - 19:11 #2
Hvis $row_boats['pos'] er unik, kan du med fordel opbygge dit $myboats array således:

$myboats[$row_boats['pos']] = array('status' => $row_boats['status'], 'name' => $row_boats['name']);

foreach($harbor as $harborposition) {
    list($cor_X, $cor_y, $position, $name) = $harborposition;
    if(array_key_exists($position, $myboats)) {
        $type = $myboats[$position]['status'];
        $name = $myboats[$position]['name'];
    } else {
        $type = 3;
    }
    print "$position, $type, $name<br />";
}

Ellers er du nød til at gennemløbe array $myboats for hver $harborposition for at lede efter position.
Avatar billede mrfunder Nybegynder
06. april 2007 - 19:40 #3
Du er hermed dagens mand i skysovs! smider du et svar? :)
Avatar billede 7th Praktikant
07. april 2007 - 17:37 #4
Jep :)
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