webForumDet fria alternativet

? samma som en if-then sats?

PHP

5 svar · 489 visningar · startad av drew

Medlem sedan mars 2007845 inlägg
Frågan#1

Hejsan

En kort fråga bara...
Är

$x = ($y == $z) ? '3' : '4';

funktionelt identiskt med

if($y == $z)
  $x = '3';
else
  $x = '4';

?

/D

Medlem sedan sep. 2001961 inlägg
#2

Ja, men det senare är mer läsbart.

Medlem sedan aug. 200426 inlägg
#3

Ja det är samma sak. Men jag vet inte om jag håller med om att den senare är mera läsbar. Den första tar ju bra mycket mindre rader kod..

Medlem sedan mars 20041 505 inlägg
#4

Den första varianten är mycket användbar i andra fall, exempelvis såhär:

echo 'Det finns just nu ', (count($messages)>0) ? $count($messages) : 'inga', ' meddelanden att visa.';

Jämfört med:

echo 'Det finns just nu ';
if (count($messages)) {
  echo 'inga';
} else {
  echo count($messages);
}
echo 'meddelanden att visa.';
Medlem sedan jan. 20023 327 inlägg
#5

bratanon skrev:

Ja det är samma sak. Men jag vet inte om jag håller med om att den senare är mera läsbar. Den första tar ju bra mycket mindre rader kod..

Ja och det gör den inte mer läsbar av den anledningen.

Medlem sedan sep. 2001961 inlägg
#6

bratanon skrev:

Ja det är samma sak. Men jag vet inte om jag håller med om att den senare är mera läsbar. Den första tar ju bra mycket mindre rader kod..

Tja, det går ju att skriva det i "talform" såhär:

$x = ($y == $z) ? '3' : '4';

Tilldela variabeln x om y är lika med z värdet '3', annars värdet 4.

(Klockren svenska...)

if($y == $z)
  $x = '3';
else
  $x = '4';

Om y är lika med z tilldela x värdet 3 annars tilldela x värdet 4.

Vet inte vilken du skulle föredra att skriva på svenska. Eller annat valfritt fonetiskt språk.

Vid körning är de identiska.

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)