Là những người khác và người khác có phải là người khác không?


170

elseifelse ifhoàn toàn đồng nghĩa, hoặc có một sự khác biệt?

Zend có "tiêu chuẩn" được chấp nhận để sử dụng không?

Trong khi cá nhân tôi không thích nhìn thấy elseifmã, tôi chỉ cần biết liệu chúng có đồng nghĩa hay không và hướng dẫn PHP không dễ tìm kiếm nhất.


10
Nhân tiện, không phải mọi ngôn ngữ khác đều sử dụng else if. Ví dụ, VB cũng sử dụng ElseIfvà Ruby sử dụng elsif.
Daniel Vandersluis

6
và shell / bash sử dụng elif
knittl

7
python cũng sử dụng elif
gregghz

Câu trả lời:


218

Từ hướng dẫn PHP :

Trong PHP, bạn cũng có thể viết 'other if' (bằng hai từ) và hành vi sẽ giống hệt với 'otherif' (trong một từ duy nhất). Ý nghĩa cú pháp hơi khác nhau (nếu bạn quen thuộc với C, đây là cùng một hành vi) nhưng điểm mấu chốt là cả hai sẽ dẫn đến cùng một hành vi.

Về cơ bản, chúng sẽ hoạt động giống nhau, nhưng else ifvề mặt kỹ thuật tương đương với cấu trúc lồng nhau như vậy:

if (first_condition)
{

}
else
{
  if (second_condition)
  {

  }
}

Hướng dẫn cũng ghi chú:

Lưu ý rằng otherif và khác nếu sẽ chỉ được coi là giống hệt nhau khi sử dụng dấu ngoặc nhọn như trong ví dụ trên. Khi sử dụng dấu hai chấm để xác định các điều kiện if / otherif của bạn, bạn không được tách từ khác thành hai từ hoặc PHP sẽ không thành công với lỗi phân tích cú pháp.

Điều đó có nghĩa là ở dạng cấu trúc điều khiển thông thường (nghĩa là sử dụng dấu ngoặc nhọn):

if (first_condition)
{

}
elseif (second_condition)
{

}

một trong hai elseifhoặc else ifcó thể được sử dụng. Tuy nhiên, nếu bạn sử dụng cú pháp thay thế , bạn phải sử dụng elseif:

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

18
Tốt công việc với các đoạn ví dụ. Nếu bất cứ điều gì, cú pháp thay thế là tất cả những gì cần thiết để chứng minh rằng PHP chỉ đơn giản là xử lý else ifnhư else { if {.
BoltClock

2
PHP không coi else ifelse { if {, nếu không bạn sẽ không thể làm if (0) { } else if (0) { } else { }...
Guido Hendriks

4
@GuidoHendriks: không phải cái này được coi là cái khác, mà là chúng tương đương về mặt chức năng. Ví dụ của bạn tương đương với hình thức lồng nhau if (0) { } else { if (0) { } else { } }. Lưu ý rằng không có sự mơ hồ trong elsekhối cuối cùng , luôn luôn là trường hợp cho các nhánh hoàn chỉnh (mỗi ifcó một else).
outis

Dưới đây là một ví dụ để tham khảo php.net/manual/en/control-structures.elseif.php#115851
WhyAyala

Với synyax thay thế, bạn chỉ cần nhớ 'dấu hai chấm' và endif của bên trong nếu: if ($v1='1'): do_thing(); else: if($v1='b' ): do_another_thing(); else: do_smthing_else(); endif; endif; là tương đương với; if ($v1='1'): do_thing(); elseif($v1='b' ): do_another_thing(); else: do_smthing_else(); endif;
DDS

47

Nhóm Khả năng tương tác khung (FIG) được tạo thành từ các thành viên bao gồm các nhà phát triển của Zend ( https://github.com/php-fig/fig-stiterias#v biểu- members ), tập hợp một loạt các khuyến nghị Tiêu chuẩn (PSR - #).

Zend2 và Symfony2 đã theo PSR-0.

Không có quy tắc cứng và nhanh nào cho kiểu dáng, nhưng bạn có thể thử và tuân theo càng nhiều PSR-2 càng tốt.

Có một nhận xét về người khác nếu so với otherif trong PSR-2:

Từ khóa otherif NÊN được sử dụng thay vì từ khác nếu như vậy để tất cả các từ khóa kiểm soát trông giống như các từ đơn lẻ.

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

Một số khuyến nghị chỉ là, khuyến nghị. Tùy thuộc vào việc bạn có sử dụng khác hay không nếu


4
Cảm ơn bạn rất nhiều vì đã chỉ ra hướng dẫn từ khóa như một từ.
Theodore R. Smith
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.