Hướng dẫn unset vs null php - bỏ đặt so với null php

Hãy xem mã sau:

 

Và khi áp dụng Unset, tôi nhận được kết quả tương tự:

Vì vậy, sự khác biệt giữa việc gán null và unset là gì?

Hướng dẫn unset vs null php - bỏ đặt so với null php

Hakre

Phù bằng vàng 188K50420 Huy hiệu bạc810 Huy hiệu Đồng50 gold badges420 silver badges810 bronze badges

Hỏi ngày 12 tháng 10 năm 2012 lúc 12:53Oct 12, 2012 at 12:53

2

Như bạn có thể thấy dưới đây, cả hai sẽ hành xử khá giống nhau cho các hoạt động so sánh tiêu chuẩn.

Sử dụng unset() để miễn phí các đối tượng / mảng lớn không được sử dụng nữa nhưng không thể được giải phóng bởi GC vì các tài liệu tham khảo vẫn được tổ chức ở nơi khác.

-------------------------------------------------------------------------------
|   Expression     | gettype()  | empty()  | is_null()  | isset()  | boolean  |
-------------------------------------------------------------------------------
| $x = "";         | string     | TRUE     | FALSE      | TRUE     | FALSE    |
| $x = null        | NULL       | TRUE     | TRUE       | FALSE    | FALSE    |
| var $x;          | NULL       | TRUE     | TRUE       | FALSE    | FALSE    |
| $x is undefined  | NULL       | TRUE     | TRUE       | FALSE    | FALSE    |
-------------------------------------------------------------------------------

Đã trả lời ngày 12 tháng 10 năm 2012 lúc 13:10Oct 12, 2012 at 13:10

Hướng dẫn unset vs null php - bỏ đặt so với null php

AEFXXAEFXXaefxx

24.4K6 Huy hiệu vàng43 Huy hiệu bạc55 Huy hiệu Đồng6 gold badges43 silver badges55 bronze badges

0

như ai đó tuyên bố từ unset ()

unset () thực hiện những gì nó nói - không đặt một biến. Nó không buộc giải phóng bộ nhớ ngay lập tức. Người thu gom rác của PHP sẽ làm điều đó khi thấy phù hợp - theo ý định sớm, vì những chu kỳ CPU đó không cần thiết, hoặc muộn như trước khi tập lệnh sẽ hết bộ nhớ, bất cứ điều gì xảy ra trước.

Nếu bạn đang làm $ bất cứ điều gì = null; Sau đó, bạn đang viết lại dữ liệu của biến. Bạn có thể nhận được bộ nhớ được giải phóng / thu nhỏ nhanh hơn, nhưng nó có thể đánh cắp các chu kỳ CPU từ mã thực sự cần chúng sớm hơn, dẫn đến thời gian thực hiện tổng thể dài hơn.

Đã trả lời ngày 12 tháng 10 năm 2012 lúc 12:55Oct 12, 2012 at 12:55

Hướng dẫn unset vs null php - bỏ đặt so với null php

MlefevremlefevreMLeFevre

4.5723 Huy hiệu vàng31 Huy hiệu bạc45 Huy hiệu Đồng3 gold badges31 silver badges45 bronze badges

Mẫu php doc isset

Xác định xem một biến được đặt và không phải là null.

Nếu một biến đã không được đặt với unset (), nó sẽ không còn được đặt nữa. ISSET () sẽ trả về sai nếu kiểm tra một biến đã được đặt thành NULL. Cũng lưu ý rằng một byte null ("\ 0") không tương đương với hằng số php null.

Trên Untet

unset () phá hủy các biến được chỉ định.

Nó không quan trọng nếu nó được bắt đầu hay không vì bạn đang sử dụng ISSET, nó sẽ trả về sai cho cả hai giá trị biến và null được khởi tạo

Đã trả lời ngày 12 tháng 10 năm 2012 lúc 12:55Oct 12, 2012 at 12:55

Hướng dẫn unset vs null php - bỏ đặt so với null php

MlefevremlefevreBaba

4.5723 Huy hiệu vàng31 Huy hiệu bạc45 Huy hiệu Đồng28 gold badges164 silver badges215 bronze badges

Mẫu php doc isset

Xác định xem một biến được đặt và không phải là null.

Nếu một biến đã không được đặt với unset (), nó sẽ không còn được đặt nữa. ISSET () sẽ trả về sai nếu kiểm tra một biến đã được đặt thành NULL. Cũng lưu ý rằng một byte null ("\ 0") không tương đương với hằng số php null.

Trên Untet

unset () phá hủy các biến được chỉ định.Oct 12, 2012 at 12:58

Nó không quan trọng nếu nó được bắt đầu hay không vì bạn đang sử dụng ISSET, nó sẽ trả về sai cho cả hai giá trị biến và null được khởi tạoTrott

Babababa22 gold badges161 silver badges203 bronze badges

92.9K28 Huy hiệu vàng164 Huy hiệu bạc215 Huy hiệu đồng

$a = 1;
$b = 2;

if ( $a == true ) echo 'Value'; else echo 'No value';
if ( $b == true ) echo 'Value'; else echo 'No value';

/*
Value
Value
*/

$a = NULL;
unset( $b );

if ( $a == true ) echo 'Value'; else echo 'No value';
if ( $b == true ) echo 'Value'; else echo 'No value';

/*
No value

Notice: Undefined variable: b in C:\test\test.php on line 13
No value
*/

Bạn đang sử dụng isset(). Theo hướng dẫn, isset() kiểm tra xem một biến được đặt và không null. Vì vậy, bạn không thể sử dụng isset() để phân biệt giữa một biến không được đặt và một biến là null.

Đặt một biến thành null có nghĩa là chính xác điều đó: biến được đặt thành một giá trị và giá trị đó là giá trị đặc biệt null.Oct 12, 2012 at 13:04

Hướng dẫn unset vs null php - bỏ đặt so với null php

Mặt khác, unset() có nghĩa là biến không còn được đặt nữa. Nó không có giá trị và về cơ bản không còn tồn tại nữa.Peon

Điều này có ý nghĩa đối với việc thu gom rác và những thứ khác, nếu bạn muốn lặn sâu hơn.7 gold badges56 silver badges95 bronze badges

Đã trả lời ngày 12 tháng 10 năm 2012 lúc 12:58

$a = NULL;

Trottstrott

62.6K22 Huy hiệu vàng161 Huy hiệu bạc203 Huy hiệu đồng

unset($a);

Mọi thứ đã được trả lời khá nhiều, nhưng tôi chỉ muốn thêm ví dụ này:

Kết quả có thể gần, nhưng lần cuối cùng tạo ra một thông báo, vì không còn biến như vậy nữa.

Đã trả lời ngày 12 tháng 10 năm 2012 lúc 13:04

Peonpeon

Output:

NULL
NULL

Notice: Undefined variable: a in /t.php on line 16
NULL

http://codepad.org/cC1vRx0W

7.7227 Huy hiệu vàng56 Huy hiệu bạc95 Huy hiệu ĐồngOct 12, 2012 at 14:54

Hướng dẫn unset vs null php - bỏ đặt so với null php

Sự khác biệt chính là cài đặt một biến thành null như:hakre

Phù bằng vàng 188K50420 Huy hiệu bạc810 Huy hiệu Đồng50 gold badges420 silver badges810 bronze badges

đang gán một giá trị, ở đây là giá trị

-------------------------------------------------------------------------------
|   Expression     | gettype()  | empty()  | is_null()  | isset()  | boolean  |
-------------------------------------------------------------------------------
| $x = "";         | string     | TRUE     | FALSE      | TRUE     | FALSE    |
| $x = null        | NULL       | TRUE     | TRUE       | FALSE    | FALSE    |
| var $x;          | NULL       | TRUE     | TRUE       | FALSE    | FALSE    |
| $x is undefined  | NULL       | TRUE     | TRUE       | FALSE    | FALSE    |
-------------------------------------------------------------------------------
2.

Mặc dù unset() thích

không thiết lập biến, điều đó có nghĩa là loại bỏ nó khỏi bảng biến.

Vì các biến không xác định đều là

-------------------------------------------------------------------------------
|   Expression     | gettype()  | empty()  | is_null()  | isset()  | boolean  |
-------------------------------------------------------------------------------
| $x = "";         | string     | TRUE     | FALSE      | TRUE     | FALSE    |
| $x = null        | NULL       | TRUE     | TRUE       | FALSE    | FALSE    |
| var $x;          | NULL       | TRUE     | TRUE       | FALSE    | FALSE    |
| $x is undefined  | NULL       | TRUE     | TRUE       | FALSE    | FALSE    |
-------------------------------------------------------------------------------
2 trong PHP, bạn có thể không thấy sự khác biệt.Oct 21, 2016 at 8:53

Hướng dẫn unset vs null php - bỏ đặt so với null php

Tuy nhiên, nếu biến bạn không được đặt là bí danh, chỉ có bí danh được xóa, không có sự gán giá trị

-------------------------------------------------------------------------------
|   Expression     | gettype()  | empty()  | is_null()  | isset()  | boolean  |
-------------------------------------------------------------------------------
| $x = "";         | string     | TRUE     | FALSE      | TRUE     | FALSE    |
| $x = null        | NULL       | TRUE     | TRUE       | FALSE    | FALSE    |
| var $x;          | NULL       | TRUE     | TRUE       | FALSE    | FALSE    |
| $x is undefined  | NULL       | TRUE     | TRUE       | FALSE    | FALSE    |
-------------------------------------------------------------------------------
2 cho nó.Mahesh Yadav

Một cuộc biểu tình về điều đó:20 silver badges22 bronze badges