2012-12-13 22 views
5

là có cách nào tôi có thể bắt chước javascripts xử lý biến lỏng lẻo trong php? ví dụ, trong php i phải viếtlà có một php tương đương với javascripts a = b && b.c || d

$instituteID = (isset($p['regInstituteName']) && isset($p['regInstituteName']['ID'])) ? $p['regInstituteName']['ID'] : null; 

trong khi ở javascript này sẽ ngưng tụ để

instituteID = p.regInstituteName && p.regInstituteName.id || null; 

doesnt có vẻ như rằng có rất nhiều sự khác biệt nhưng nó cho biết thêm lên

+0

Không có. Đặt cược tốt nhất của bạn là toán tử ternary ngưng tụ '?:' Để thay thế OR '||' lười. –

+0

Theo ý kiến ​​cá nhân của tôi, cách tốt nhất là không viết mã những biểu thức không tầm thường như vậy. Hãy suy nghĩ về những kẻ thuần khiết này, những người sẽ cố gắng hiểu mã của bạn trong tương lai. –

+0

Cá nhân tôi sẽ tóm tắt điều này thành một hàm được sử dụng như sau: '$ institureId = ifDefined ($ p, 'regInstituteName.ID')' – Deestan

Trả lời

7

Về cơ bản .. Không. Có have been some proposals trong quá khứ, nhưng chúng đã bị từ chối.

Chỉnh sửa: Bạn có thể tối ưu hóa nó trong trường hợp bạn đang vui mừng ném E_NOTICE lỗi. Nhưng tôi khuyên bạn nên chống lại điều đó.

+0

Điều gì về ternary ngưng tụ? –

+0

Không giải quyết được. OP cần thực hiện 'isset()' trước, và kết quả của 'isset ($ x) || $ x' sẽ dẫn đến boolean. – Evert

2

Bạn chỉ cần một isset trong trường hợp của bạn.

Vì nếu $p['regInstituteName']['ID'] được đặt, thì $p['regInstituteName'] luôn được đặt.

$instituteID = isset($p['regInstituteName']['ID']) ? $p['regInstituteName']['ID'] : null; 
+0

không biết điều đó. đã tìm ra con đường chắc chắn, nhưng cảm ơn gợi ý này – lordvlad

Các vấn đề liên quan