“Elseif” ve “else if” tamamen eş anlamlı mıdır?


170

Are elseifve else iftamamen eşanlamlı ya da bir fark var mı?

Zend'in hangisinin kullanılacağı kabul edilmiş bir "standardı" var mı?

Ben şahsen elseifkodu görmek sevmiyorum iken , ben sadece onlar eşanlamlı olup olmadığını bilmek gerekir ve PHP manuel aramak için kolay değil.


10
Bu arada her dil kullanılmıyor else if. Örneğin, VB ayrıca ElseIfRuby kullanır elsif.
Daniel Vandersluis

6
ve kabuk / bash elif kullanır
knittl

7
python ayrıca elif kullanır
gregghz

Yanıtlar:


218

Gönderen PHP Kılavuzu :

PHP'de 'else if' (iki kelimede) yazabilir ve davranış 'elseif' (tek kelimeyle) ile aynı olabilir. Sözdizimsel anlam biraz farklıdır (C'ye aşina iseniz, bu aynı davranıştır), ancak sonuçta her ikisi de tamamen aynı davranışa neden olacaktır.

Esasen, aynı şekilde davranacaklar, ancak else ifteknik olarak , aşağıdaki gibi iç içe bir yapıya eşdeğerdir:

if (first_condition)
{

}
else
{
  if (second_condition)
  {

  }
}

Kılavuz ayrıca şunları not eder:

Elseif ve else komutunun yukarıdaki örnekte olduğu gibi yalnızca süslü parantez kullanıldığında aynı kabul edileceğini unutmayın. İf / elseif koşullarınızı tanımlamak için iki nokta üst üste kullanırken, iki kelimeye ayırırsanız başka ayırmamalısınız, yoksa PHP ayrıştırma hatasıyla başarısız olur.

Bu, normal kontrol yapısı formunda (yani parantez kullanarak) şu anlama gelir:

if (first_condition)
{

}
elseif (second_condition)
{

}

ya elseifda else ifkullanılabilir. Ancak, alternatif sözdizimini kullanıyorsanız şunları kullanmalısınız elseif:

if (first_condition):
  // ...
elseif (second_condition):
  // ...
endif;

18
Örnek parçacıkları ile iyi iş çıkardın. Bir şey olsa bile, alternatif sözdizimi gerekli olduğunu tüm bu PHP basitçe davranır kanıtlamaktır else ifolarak else { if {.
BoltClock

2
PHP tedavi etmez else ifolarak else { if {aksi yapmanız mümkün olmaz, if (0) { } else if (0) { } else { }...
Guido Hendriks

4
@GuidoHendriks: biri diğeri gibi muamele görmüyor, işlevsel olarak eşdeğerler. Örneğin, iç içe formla eşdeğerdir if (0) { } else { if (0) { } else { } }. Son elseblokta herhangi bir belirsizlik olmadığına dikkat edin , bu da her zaman tam dallar için geçerlidir (her ifbirinin bir vardır else).
outis

İşte referans için başka bir örnek php.net/manual/tr/control-structures.elseif.php#115851
WhyAyala

Alternatif sözdizimi ile, yalnızca if ($v1='1'): do_thing(); else: if($v1='b' ): do_another_thing(); else: do_smthing_else(); endif; endif; şu durumlarda iç içe 'kolon' ve endif'i hatırlamanız gerekir :; if ($v1='1'): do_thing(); elseif($v1='b' ): do_another_thing(); else: do_smthing_else(); endif;
DDS

47

Zend geliştiricilerini içeren üyelerden oluşan Çerçeve Birlikte Çalışabilirlik Grubu (FIG) ( https://github.com/php-fig/fig-standards#voting-members ), bir dizi Standart öneri (PSR) bir araya getirdi - #).

Zend2 ve Symfony2 zaten PSR-0'ı takip ediyor.

Stiller için zor ve hızlı kurallar yoktur, ancak PSR-2'yi mümkün olduğunca çok deneyebilir ve takip edebilirsiniz.

PSR-2'de elseif ise başka bir yorum var:

Tüm kontrol anahtar kelimelerinin tek tek kelimeler gibi görünmesi için else anahtar sözcüğü başka bir yerde kullanılmamalıdır.

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md#51-if-elseif-else

Önerilerin bazıları sadece budur. Başka bir yöntem kullanıp kullanmayacağınız size bağlıdır.


4
Tek kelimelik anahtar kelimeler yönergesini belirttiğiniz için çok teşekkür ederiz.
Theodore R. Smith
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.