Avatar billede proff Nybegynder
08. april 2007 - 13:10 Der er 6 kommentarer og
1 løsning

Return string eller id ud af array

Hej eksperter!

Jeg har et kæmpe array med over 100 lande. Hvert land har et unikt id (se eksempel array: 1 for danmark) og ellers indeholder array navnet på landet og en flag kode (/gfx/icons/$id.gif) (se eksempel array: 45 for danmark)

Jeg søger nu en nem måde hvorpå jeg herefter kan hente enten landets navn eller flag bare ved at skrive noget i stil med $lande->$flag(id); eller $lande->$navn(id); hvorefter der så retuneres en string eller et billede? Altså en nem funktion der søger i mit array? Er dette muligt?

Eksempler, illustrationer og på anden måde ville være yderst betænksomt (:

$lande = array(
              "1"  => array("Danmark", "45"),
              "2" => array("Norge", "32"),
              "3"  => array("Sverige", "10")
              );


På forhånd tak
Avatar billede johan.o Nybegynder
08. april 2007 - 15:07 #1
Det er muligt du leder efter noget med 'klasser' men måske sådan her -->

Da lande navnene sikkert er unikke i forvejen, ville jeg lave et array med landene som nøgler og flag nummeret som værdi...

Så hvis du skal finde flaget for et land : $flag=$mArr['et_land'];

Hvis du skal finde landet til et flag id...

$land=array_search("et_flag", $mArr);

Mvh. Johan
Avatar billede proff Nybegynder
08. april 2007 - 15:19 #2
Jeg foretrækker at bruge et id som nøgle da jeg har en mærkelig forestillings ide om at når jeg skal hente en record fra databasen og så bagefter have et matchende flag til denne record, så er det bedre at gemme et lille id end en stor string i databasen.

Jeg kender intet til klasser, er det muligt du kan uddybe? eventuelt med et fuldt eksempel

På forhånd tak (:
Avatar billede johan.o Nybegynder
08. april 2007 - 16:48 #3
Klasser har jeg ikke viden nok til at lære fra mig endnu :)...men måske du kan bruge det her til noget -->

<?php

function soeg_i_multiarray($oStr, $oArr) {
for($i=1; $i<=count($oArr); $i++) {
  if(array_search($oStr, $oArr[$i])!==FALSE) {
  return $i; } }
return false; }

$lande = array(
              "1"  => array("Danmark", "45"),
              "2" => array("Norge", "32"),
              "3"  => array("Sverige", "10")
              );

echo "Sverige er i det array med id --> ".soeg_i_multiarray("Sverige", $lande)." --> Så Sveriges flag er --> ".$lande[soeg_i_multiarray("Sverige", $lande)][1]."<br>";
echo "Dannebrog er i det array med id --> ".soeg_i_multiarray("45", $lande)." --> Så landet er --> ".$lande[soeg_i_multiarray("45", $lande)][0]."<br>";

?>

Mvh. Johan
Avatar billede proff Nybegynder
08. april 2007 - 16:53 #4
Det kan jeg uden tvivl, smid et svar sådan vi kan få dette afgjort .-)
Avatar billede johan.o Nybegynder
08. april 2007 - 17:59 #5
Det kommer her :)

Mvh. Johan
Avatar billede proff Nybegynder
08. april 2007 - 18:10 #6
Og tak for hjælpen .-)
Avatar billede johan.o Nybegynder
09. april 2007 - 09:31 #7
Velbekomme, og tak for points :)

Mvh. Johan
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