else

(PHP 4, PHP 5, PHP 7, PHP 8)

Çoğu zaman belli bir koşul sağlandığında bir deyimin, o koşul sağlanmadığında başka bir deyimin çalıştırılmasını isteyeceksiniz. Bunun için else kullanılmaktadır. Else, bir if deyimini false döndürdüğü takdirde bir deyim çalıştırmak üzere genişletir. Örneğin, aşağıdaki kod $a değeri $b değerinden büyükse a büyüktür b, büyük değilse a büyük değildir b iletisini görüntüleyecektir:

<?php
if ($a > $b) {
echo
"a büyüktür b";
} else {
echo
"a büyük değildir b";
}
?>
Else deyimi yalnızca if deyiminin false döndürdüğü durumda çalıştırılacaktır. Aynı durum, false döndüren herhangi bir elseif ifadesinin olması durumunda da geçerlidir (bakınız elseif).

Bilginize: Sarkan else

if-else deyimlerinin iç içe olduğu durumda, else deyimleri daima en yakın if ile ilişkilendirilir.

<?php
$a
= false;
$b = true;
if (
$a)
if (
$b)
echo
"b";
else
echo
"c";
?>
Girintiye (PHP için bu da yoksayılacak boşluklardan biridir) rağmen, else beklenenin aksine if ($b) ile ilişkilendirilir, bu nedenle örnek herhangi bir çıktı üretmez. Bu davranışa güvenilebilirse de, kaşlı ayraçları kullanarak olası belirsizlikleri gidermek daha iyidir.

add a note

User Contributed Notes 2 notes

up
20
dormeydo at gmail dot com
17 years ago
An alternative and very useful syntax is the following one:statement ? execute if true : execute if falseThs is very usefull for dynamic outout inside strings, for example:print('$a is ' . ($a > $b ? 'bigger than' : ($a == $b ? 'equal to' : 'smaler than' )) .  '  $b');This will print "$a is smaler than $b" is $b is bigger than $a, "$a is bigger than $b" if $a si bigger and "$a is equal to $b" if they are same.
up
11
Caliban Darklock
20 years ago
If you're coming from another language that does not have the "elseif" construct (e.g. C++), it's important to recognise that "else if" is a nested language construct and "elseif" is a linear language construct; they may be compared in performance to a recursive loop as opposed to an iterative loop. <?php$limit=1000;for($idx=0;$idx<$limit;$idx++)  { $list[]="if(false) echo \"$idx;\n\"; else"; }$list[]=" echo \"$idx\n\";";$space=implode(" ",$list);| // if ... else if ... else$nospace=implode("",$list); // if ... elseif ... else$start=array_sum(explode(" ",microtime()));eval($space);$end=array_sum(explode(" ",microtime()));echo $end-$start . " seconds\n";$start=array_sum(explode(" ",microtime()));eval($nospace);$end=array_sum(explode(" ",microtime()));echo $end-$start . " seconds\n";?>This test should show that "elseif" executes in roughly two-thirds the time of "else if". (Increasing $limit will also eventually cause a parser stack overflow error, but the level where this happens is ridiculous in real world terms. Nobody normally nests if() blocks to more than a thousand levels unless they're trying to break things, which is a whole different problem.)There is still a need for "else if", as you may have additional code to be executed unconditionally at some rung of the ladder; an "else if" construction allows this unconditional code to be elegantly inserted before or after the entire rest of the process. Consider the following elseif() ladder:<?phpif($a) { conditional1(); }elseif($b) { conditional2(); }elseif($c) { conditional3(); }elseif($d) { conditional4(); }elseif($e) { conditional5(); }elseif($f) { conditional6(); }elseif($g) { conditional7(); }elseif($h) { conditional8(); }else { conditional9(); }?>To insert unconditional preprocessing code for $e onward, one need only split the "elseif":<?phpif($a) { conditional1(); }elseif($b) { conditional2(); }elseif($c) { conditional3(); }elseif($d) { conditional4(); }else {....unconditional();....if($e) { conditional5(); }....elseif($f) { conditional6(); }....elseif($g) { conditional7(); }....elseif($h) { conditional8(); }....else { conditional9(); }}?>The alternative is to duplicate the unconditional code throughout the construct.
To Top