php unset()它到底是做什么的?

时间:2014-01-20 23:36:50

标签: php

PHP documentation说明了unset()语言构造的以下内容:

  

销毁指定的变量。

     

取消设定给定的变量

这究竟意味着什么?只是销毁变量内容;清空一个变量并给它赋值null?或者它是否意味着,消除变量不仅仅是内容而是一切?

我写了以下内容:

$a = "tom";

unset($a);

var_dump($a);

得到了这个:

Notice: Undefined variable: a in...

2 个答案:

答案 0 :(得分:-1)

它会破坏内容,并使变量处于未定义状态。

如果您在取消设置后尝试再次访问该变量,并且您已禁用警告,则可能会检索该值,但绝对无法保证。

答案 1 :(得分:-4)

还有一个例子:

如何从来自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遍历数组$ documents

3. 如果记录不存在则取消设置

4。 array_values($documents)重新编号$documents array,否则当您的流程开始期待以键开头的数组时,您可能会遇到麻烦($ key) * 0(零) *。