2013-09-03 30 views
33

Có cách viết tắt nào để gán một biến cho một cái gì đó nếu nó không tồn tại trong PHP không?Viết tắt PHP cho isset()?

if(!isset($var) { 
    $var = ""; 
} 

Tôi muốn làm điều gì đó như

$var = $var | ""; 
+1

Không '$ val = isset ($ var)? $ var: ''; 'công việc cho bạn? –

+2

Tôi thấy bài viết này rất hữu ích: http://davidwalsh.name/php-shorthand-if-else-ternary-operators – Pathros

+0

Tốt hơn bản gốc cho bản sao này: [Cách tốt nhất để cung cấp cho một biến một giá trị mặc định (mô phỏng Perl ||, || =)] (http://stackoverflow.com/q/5972516/2157640) – Palec

Trả lời

109

Cập nhật cho PHP 7 (nhờ shock_gone_wild)

PHP 7 giới thiệu cái gọi là vô điều hành coalescing mà đơn giản hoá báo cáo bên dưới:

$var = $var ?? "default"; 

Trước PHP 7

Không, không có nhà điều hành đặc biệt hoặc cú pháp đặc biệt cho việc này. Tuy nhiên, bạn có thể sử dụng các nhà điều hành ternary:

$var = isset($var) ? $var : "default"; 

Hoặc như thế này:

isset($var) ?: $var = 'default'; 
+1

Đây là một liên kết đến các tính năng mới của PHP7 (bao gồm cả toán tử kết hợp null): http://php.net/manual/en/migration70 .new-features.php – kurdtpage

+1

Ngoài các câu lệnh gán, toán tử này cũng có thể được sử dụng trong các đối số hàm. –

+3

Không hoạt động với các mảng. '$ attribute ['hint'] ?? '' '** Chỉ mục không xác định: gợi ý ** –

16

Bạn có thể sử dụng toán tử ternary mới (PHP 5.3+)

isset($var) ?: $var = ""; 

Hoặc cho phiên bản cũ hơn:

$var = isset($var) ? $var : ""; 
+5

Nếu '$ var' tồn tại và có giá trị, bạn sẽ ghi đè giá trị đó bằng giá trị' true'. 2 ví dụ này không giống nhau. –

+2

Bạn nói đúng. Đã chỉnh sửa, cảm ơn. –

+2

Bạn không chắc chắn ai đã downvoted bạn, nhưng tôi đã đưa bạn trở lại, đây là một câu trả lời hữu ích, cảm ơn. – brentonstrine