Avatar billede learner Praktikant
09. februar 2010 - 10:32 Der er 9 kommentarer og
1 løsning

hvordan fungerer denne? (a ? b : '')

$action = (isset($_GET['action']) ? $_GET['action'] : '');

jeg vil gerne lære at skrive den slags som herover, men forstår ik helt hvordan de virker?

jeg vil fx gerne skrive noget lignende
$huhuh = 'bbbb'.(hvis $_GET['action'] så skal den skrive "ggg" ellers skal den skrive "hhh").'bbbbbbbb';

Hvordan skal den så strikkes sammen?

Takker :o)
Avatar billede JesperKPedersen Nybegynder
09. februar 2010 - 10:46 #1
linien :

$action = (isset($_GET['action']) ? $_GET['action'] : '');

? : opbygges således...

  udtryk?ved sandt resultat:ved falsk resultat

i dit eksempel med $huhuh...

$huhuh = 'bbbb'.(isset($_['action'])?'ggg':'hhh').'bbbbbbbb';

Håber det hjælper.

Mvh
  JesperKP
Avatar billede learner Praktikant
09. februar 2010 - 10:57 #2
tusind tak for hjælpen, det vil jeg helt sikert begynde at bruge oftere

Michael
Avatar billede michael_stim Ekspert
09. februar 2010 - 11:01 #3
Enkelt forklaret, er det en if på en linie:

if(isset($_GET['action'])){
  $action=$_GET['action'];
}
else{
  $action="";
}
Avatar billede repox Seniormester
09. februar 2010 - 11:14 #4
Jeg beklager meget at jeg bryder ind i et afsluttet spørgsmål, men; hvad er årsagen til at du gerne vil bruge den syntaks og endda 'oftere'?

Det er kendt som en alternativ syntaks (som du kan læse meget mere om her: http://php.net/manual/en/control-structures.alternative-syntax.php) men som du selv kunne konstatere var den ikke nem at regne ud ved første øjekast.

Strukturer ala:

  $foo = (is_array($bar)) ? true : false;

  $foo = (is_array($bar)) ? (count($bar) > 5) ? true : false : "Not an array";

  $foo = (is_array($bar)) ?: false;


er stort set ulæselige, særligt for nye udviklere.

Brug dem om du vil, men med omtanke. Særligt hvis du skal dele din kode med andre.
Avatar billede learner Praktikant
09. februar 2010 - 15:22 #5
enig, den er lidt svær første gang :o)
Avatar billede arne_v Ekspert
09. februar 2010 - 21:10 #6
Afhaenger vel lidt af maalgruppen.

?: er en almindelig operator i alle sprog i C familen.
Avatar billede repox Seniormester
09. februar 2010 - 21:18 #7
#6
Det gør det ikke nødvendigvis pænt eller letlæseligt ;)
Men alt er en vanesag; det er bare oftere reglen end undtagelsen at folk har svært ved at læse den.
Avatar billede arne_v Ekspert
11. februar 2010 - 02:42 #8
?: er ikke nogen speciel køn konstruktion.

Men med dagens sprog præferancer vil jeg mene, at hvis det er et stort problem, så har projektet et stort problem.
Avatar billede repox Seniormester
11. februar 2010 - 09:38 #9
#8
Det kan man måske tale for; men så er spørgsmålet jo mere om man har lyst til køn eller grim kode?
Avatar billede michael_stim Ekspert
11. februar 2010 - 11:11 #10
Må da nok sige, at i visse tilfælde er den ganske behændig. Og skønhed ligger i betagterens ø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