的PHP documentation狀態下面對unset()
語言構造:php unset()它真的做了什麼?
銷燬指定的變量。
取消設置給定的變量
是什麼究竟意味着什麼?只需銷燬可變內容;清空一個變量,並給它的值null
?或者這意味着,消滅變量不僅僅是它的內容,而是一切?
我寫了下面:
$a = "tom";
unset($a);
var_dump($a);
,並得到這個:
Notice: Undefined variable: a in...
的PHP documentation狀態下面對unset()
語言構造:php unset()它真的做了什麼?
銷燬指定的變量。
取消設置給定的變量
是什麼究竟意味着什麼?只需銷燬可變內容;清空一個變量,並給它的值null
?或者這意味着,消滅變量不僅僅是它的內容,而是一切?
我寫了下面:
$a = "tom";
unset($a);
var_dump($a);
,並得到這個:
Notice: Undefined variable: a in...
再舉一個例子:
樣品如何取消設置數組元素從一個MySQL請求到來的陣列結果。在這個示例中,它檢查文件是否存在,如果不存在,則從數組中刪除該行。
<?php
$db->set_query("select * from documents where document_in_user = 0"); //1
$documents = $db->result_to_array($db->get_result()); //1
foreach ($documents as $key => $row) { //2
$file = "uploads/".rawurldecode($row['document_name']);
if (file_exists ($file) == FALSE) {
unset($documents[$key]); //3
}
}
$documents = array_values($documents); // reindex the array (4)
?>
變量:
mysql table = documents,
array = $documents
array key (index) = $key
array row (record sort of speak) = $row
說明:
1.它從該表(MySQL的)獲得陣列
2.的foreach去通過數組$文件
未設置如果記錄不存在
4.的array_values($documents)
重新索引$documents array
,否則你可能會遇到麻煩結束時,你的進程將開始期待起一個數組帶鑰匙($鑰匙) * 0(零) *。
我看不到'unset()'是如何積極使用和解釋它如何實際工作.. –
它在內部完成它很複雜。所有你現在需要知道的是它將參考(變量名稱)破壞爲一個值,所以用給定的變量名稱無法達到該值。 – zerkms
它從本地變量名稱表中刪除其名稱,並取消分配關聯的zval存儲。 – mario
我想象一旦你刪除了引用,PHP的內部垃圾收集器就從那裏取得它。但是,它也取決於你是什麼樣的變量,它可能是一個關聯數組或全局引用的值,它不一定會完全摧毀變量。 –