Apakah "elseif" dan "else if" sepenuhnya identik?


170

Apakah elseifdan else ifsepenuhnya identik, atau ada perbedaan?

Apakah Zend memiliki "standar" yang diterima untuk digunakan?

Meskipun secara pribadi saya tidak suka melihatnya elseifdi dalam kode, saya hanya perlu tahu apakah itu sama dan manual PHP bukan yang paling mudah untuk dicari.


10
Omong else if-omong, tidak semua bahasa lain menggunakan . Sebagai contoh, VB juga menggunakan ElseIfdan menggunakan Ruby elsif.
Daniel Vandersluis

6
dan shell / bash menggunakan elif
knittl

7
python juga menggunakan elif
gregghz

Jawaban:


218

Dari manual PHP :

Di PHP, Anda juga bisa menulis 'else if' (dalam dua kata) dan perilakunya akan identik dengan 'elseif' (dalam satu kata). Makna sintaksis sedikit berbeda (jika Anda terbiasa dengan C, ini adalah perilaku yang sama) tetapi intinya adalah bahwa keduanya akan menghasilkan perilaku yang persis sama.

Pada dasarnya, mereka akan berperilaku sama, tetapi else ifsecara teknis setara dengan struktur bersarang seperti:

if (first_condition)
{

}
else
{
  if (second_condition)
  {

  }
}

Manual ini juga mencatat:

Perhatikan bahwa elseif dan lainnya jika hanya akan dianggap sama persis ketika menggunakan kurung keriting seperti pada contoh di atas. Saat menggunakan titik dua untuk menentukan kondisi if / elseif Anda, Anda tidak boleh memisahkan yang lain jika menjadi dua kata, atau PHP akan gagal dengan kesalahan parse.

Yang berarti bahwa dalam bentuk struktur kontrol normal (mis. Menggunakan kawat gigi):

if (first_condition)
{

}
elseif (second_condition)
{

}

salah satu elseifatau else ifbisa digunakan. Namun, jika Anda menggunakan sintaks alternatif , Anda harus menggunakan elseif:

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

18
Kerja bagus dengan cuplikan contoh. Jika ada, sintaks alternatif adalah semua yang diperlukan untuk membuktikan bahwa PHP hanya memperlakukan else ifsebagai else { if {.
BoltClock

2
PHP tidak memperlakukan else ifsebagai else { if {, jika tidak, Anda tidak akan bisa melakukan if (0) { } else if (0) { } else { }...
Guido Hendriks

4
@ GuidoHendriks: bukan karena yang satu diperlakukan sebagai yang lain, itu karena mereka secara fungsional setara. Contoh Anda setara dengan formulir bersarang if (0) { } else { if (0) { } else { } }. Perhatikan tidak ada ambiguitas di elseblok terakhir , yang selalu terjadi untuk cabang lengkap (setiap ifmemiliki else).
outis


Dengan synyax alternatif, Anda hanya perlu mengingat 'usus besar' dan endif dari dalam jika: if ($v1='1'): do_thing(); else: if($v1='b' ): do_another_thing(); else: do_smthing_else(); endif; endif; adalah setara dengan; if ($v1='1'): do_thing(); elseif($v1='b' ): do_another_thing(); else: do_smthing_else(); endif;
DDS

47

Kerangka kerja Interoperability Group (FIG) yang terdiri dari anggota yang termasuk pengembang Zend ( https://github.com/php-fig/fig-standards#voting-members ), menyusun serangkaian rekomendasi Standar (PSR) - #).

Zend2 dan Symfony2 sudah mengikuti PSR-0.

Tidak ada aturan keras dan cepat untuk gaya, tetapi Anda dapat mencoba dan mengikuti sebanyak mungkin PSR-2.

Ada komentar tentang yang lain jika vs elseif di PSR-2:

Kata kunci elseif jika HARUS digunakan daripada yang lain jika semua kata kunci kontrol terlihat seperti kata tunggal.

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

Beberapa rekomendasi hanya itu, rekomendasi. Terserah Anda apakah akan menggunakan yang lain jika atau jika tidak


4
Terima kasih banyak telah menunjukkan pedoman kata kunci sebagai satu kata.
Theodore R. Smith
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.