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.

Theodore R. Smith
sumber
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;
Daniel Vandersluis
sumber
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
Berikut contoh lain untuk referensi php.net/manual/en/control-structures.elseif.php#115851
WhyAyala
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

James Cowhen
sumber
4
Terima kasih banyak telah menunjukkan pedoman kata kunci sebagai satu kata.
Theodore R. Smith