Avatar billede kongfjong Nybegynder
15. juni 2006 - 13:16 Der er 7 kommentarer og
1 løsning

Returnering af flere værdier fra en funktion

Hej;

Hvis jeg har en funktion, som skal returnere flere værdier, og derefter tildele hver enkelt værdig til hver sin variabel det sted i koden, hvor funktionen bliver kaldt, hvordan gøres det så lettest?
Avatar billede iss Novice
15. juni 2006 - 13:26 #1
Du kan gøre det på flere måder... Enten som et array:
function dothis {
$array ["hus"]= "hus";
$array ["bil"]= "bil";
return $array;
}
Eller
function dothis(&$hus, &$bil){
$hus = "hus";
$bil = "bil";
}
Avatar billede gizmo-gizmo Nybegynder
15. juni 2006 - 13:28 #2
Du kan ikke returnere flere værdier direkte, men du kan f.eks. lave noget lignende dette (hvor man returnere ét array som så indeholder flere værdier).

function sejt()
{
return array("Hans","Petersen");
}

list($fornavn, $efternavn) = sejt();

echo $fornavn;
echo $efternavn;
Avatar billede kongfjong Nybegynder
15. juni 2006 - 13:59 #3
Tak for hjælpen;)
Avatar billede kongfjong Nybegynder
15. juni 2006 - 14:02 #4
Uh lige et tillægsspørgsmål hvis det er ok:)

Når jeg nu har laet den funktion, kan den så tilgå variabler uden for funktionen og f.eks. nulstille dem?
Avatar billede gizmo-gizmo Nybegynder
15. juni 2006 - 14:15 #5
Et eksempel på hvordan du kan gøre det:

$minvar = "Goddag";

function sigfarvel()
{
  $GLOBALS['minvar'] = "Farvel";
}

sigfarvel();

echo $minvar;
Avatar billede gizmo-gizmo Nybegynder
15. juni 2006 - 14:16 #6
Du kan også:

function sigfarvel()
{
  global $minvar;
  $minvar = "Farvel";
}
Avatar billede coderdk Praktikant
15. juni 2006 - 16:47 #7
Typisk, når du har brug for det, kunne du måske kapsle dine data ind i objekter, for metoderne i objekterne har jo adgang til objektets variable, i.e.:

class DinKlasse
{
  var $enVariabel = 0;
  function PlusEn()
  {
    $this->enVariabel++;
  }
  function PrintVar()
  {
    echo "Variablen er " . $this->enVariabel;
  }
}

$var = new DinKlasse();
$var->PlusEn();
$var->PrintVar();
$var->PlusEn();
$var->PlusEn();
$var->PrintVar();

osv - blot en overvejelse :)
Avatar billede kongfjong Nybegynder
15. juni 2006 - 16:56 #8
Cool, tak for hjælpen :)

@coderdk
Det er helt sikkert noget jeg vil overveje når jeg næste gang går i gang med at programmere en side. Første gang jeg lavede en side, vidste jeg kun det allermest nødvendige om PHP så det at programmere "i objekter" var ikke noget jeg ville kaste mig ud i:)
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