Avatar billede novellenet.dk Nybegynder
27. december 2001 - 21:46 Der er 19 kommentarer og
1 løsning

if(statement)?noget:noget_andet;) ???

Se subj...
Jeg ved ikke om syntaksen er rigtig,
men er der en eller anden som ved hvor jeg kan finde noget dokumentation på den syntaks?

Jeg har kigget under \'control-structures\' på php.net
Avatar billede bestasp Nybegynder
27. december 2001 - 21:47 #1
if

blah

else

blah

end if ?
Avatar billede dex_dexter Nybegynder
27. december 2001 - 21:48 #2
Avatar billede well_r Nybegynder
27. december 2001 - 21:48 #3
et lille eks..
if ($action = skriv){
  print \"Hej\";
}
else {
  print \"Ikke-hej\";
}
Avatar billede dex_dexter Nybegynder
27. december 2001 - 21:49 #4
<?
if(statenemt)) {
    et eller andet}
else
{
et eller andet
}
?>
Avatar billede novellenet.dk Nybegynder
27. december 2001 - 21:51 #5
Nej...
Det var ikke \'if\' jeg skulle vide noget om...
Det var det med den der slags \'switch\' med if(statement)?noget:noget_andet;)...
Hvad er det for noget med \'?noget:noget_andet;\', jeg ved godt hvad det kan bruges til, men jeg aner ikke hvad metoden hedder, hvor der er dokumentation for den o.s.v.

Jeg vil meget gerne vide meget mere om den metode, men som sagt så fandt jeg intet på php.net under \'control-structures\'...

Mange gange undskyld hvis jeg formulerede mit spørgsmål dårligt...
Avatar billede dex_dexter Nybegynder
27. december 2001 - 21:52 #6
http://razor.dk/php
der er meget om php generelt
Avatar billede skolestofdk Nybegynder
27. december 2001 - 21:53 #7
Der står en smule i slutningen af artiklen:
http://www.webcafe.dk/php/artikler/005/phpa005.php3
Avatar billede novellenet.dk Nybegynder
27. december 2001 - 21:57 #8
skolestofdk >> Nej, der stod ikke noget om den syntaks jeg nævnte...
Avatar billede erikjacobsen Ekspert
27. december 2001 - 22:02 #9
Der står ikke meget, men her er den. Der behøver heller ikke stå mere :)

http://www.php.net/manual/en/language.operators.comparison.php
Avatar billede htx98i17 Professor
27. december 2001 - 22:03 #10
EJ -> hvornår er du kommet \"tilbage\" ?
Avatar billede jakoba Nybegynder
27. december 2001 - 22:03 #11

$a = ( (2+5) == 7 ) ? \'æbler\' : \'pærer\';

nu vil din variabel  $a  få værdien \'æbler\' fordi 2+5 == 7.
det kaldes sædvanligvis for  ?:  operatoren og resultatet er altid en værdi der kan gives til en variabel eller bruges vider i et udtryk.

mvh JakobA
Avatar billede erikjacobsen Ekspert
27. december 2001 - 22:07 #12
Fornuftig eksempel på anvendelse

print \"You\'ve got $number \".($number==1?\"apple\":\"apples\").\" in your basket\";
Avatar billede barefoot Nybegynder
27. december 2001 - 22:07 #13
Der står også lidt om den her midt på siden: http://dk.php.net/manual/en/language.expressions.php
For lige at kommentere den og pointere det vigtigste så har du ret i din opbygning.

Den ser sådan her ud:

$trueOrFalse?print \'true\':print\'false\';

Første del er som du har gætet udtrykket i ifsætningen.
Efter ? tegnet står det som skal udføres hvis udtrykket er sandt.
Efter : tegnet står så det som udføres hvis det er falsk.
De hele afsluttes så med et semikolon.

Og husk at hvadend du udfører alt efter som udtrykket er sandt eller falsk SKAL DET RETURNERE DATA.
echo returnerer ikke ngoet data og kan derfor ikke bruges!
print derimod returnere 1 og kan derfor godt bruges.

Altså er følgende lovligt:
$trueOrFalse?print \'true\':print\'false\';
$trueOrFalse?print \'true\':\'\';//
$trueOrFalse?print \'\':print\'false\';

Hvis du kun ønsker at der skal udføres noget når sætningen er enten sand eller falsk skal du stadig skrive et stykke kode der returnerer data!
Du kan så ledes ikke skrive: $trueOrFalse?print \'true\':;
Men du kan godt skrive: $trueOrFalse?print \'true\':1;
eller: $trueOrFalse?print \'true\':\'\';

Håber det hjalp dig lidt...
Avatar billede barefoot Nybegynder
27. december 2001 - 22:10 #14
Husk også at du helst ikke må kalde funktioner hvis du ikke er sikker på at de returnere sand.
Hvis du har en funktion der enten returnerer sand eller falsk og du kalder den via denne if-sætning vil sætningen melde fejl i tilfælde af at funktionen returnerer falsk.
Avatar billede erikjacobsen Ekspert
27. december 2001 - 22:13 #15
Barefoot: kun i det tilfælde hvor du bruger den som et statement, hvilket
ikke ses så tit :)
Avatar billede barefoot Nybegynder
27. december 2001 - 22:15 #16
hmm måske er det mig som er bagefter, men det er faktisk det eneste som jeg har brugt den til indtil videre:)
Avatar billede erikjacobsen Ekspert
27. december 2001 - 22:18 #17
Ok, men det er nok smag og behag. Jeg kan bedre lide

  if ($trueOrFalse)  print \"true\";

end din: $trueOrFalse?print \'true\':1;

Men foretrækker

  print $trueOrFalse?\"true\":\"false\";

frem for en if-sætning.
Avatar billede barefoot Nybegynder
27. december 2001 - 22:22 #18
jow det kan jeg da godt se nu du siger det.

Jeg er bare så vant til at skrive
if(expression){
}
Og så synes jeg at:
expression?:;
er hurtigere og så fylder det mindre.

Men du har da nok ret i at if(expression) er det smarteste.

Når jeg tænker over det må det vel egentlig også være det hurtigste?
Jeg kunne godt forestille mig at parseren har lidt svært ved at genkende strukturen for den underlige if-sætning mens den normale ligesom giver sig selv eftersom der står \"if\" i starten af den:)

på samme måde som det er hurtigere at udskrive tekst med \'tekst\' end \"tekst\".
Avatar billede erikjacobsen Ekspert
27. december 2001 - 22:25 #19
Der er ingen væsentlig/målelig forskel i hastigheden på det du anfører.
Avatar billede novellenet.dk Nybegynder
27. december 2001 - 22:39 #20
Jeg har fundet ud af det nu, OG forstået det....

Tusind tak skal i have...
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