繁体   English   中英

如果可以使用相同的变量名重新声明,为什么要使用unset()清除数组?

[英]Why Use unset() To Clear Array If I Can Re-Declare Using Same Variable Name?

我想知道我是否处于这种情况下:

$data = array ("red", "green", "blue");
$data = array ("yellow", "pink", "grey");
print_r($data);

有什么不同之处呢?

$data = array ("red", "green", "blue");
unset($data);
$data = array ("yellow", "pink", "grey");
print_r($data);

这是清除数组的相同方法。 那么什么时候应该使用unset()

您可以使用unset()清除数组的一部分作为示例。

我有多个用例,需要删除数组的最后一个条目。 因此,我反转了数组,在数组的最后一个条目上使用了unset() ,然后再次将其反转为原始排序。

但是对于简单地重新声明变量,则不需要使用它。 只需立即宣布即可。

其他用例可以是自己编写的Array过滤器:

foreach ($array as $key => $value) {
    if ($value === false){
        unset($array[$key]);
    }
}

编辑:

从@Michael导入评论:

..并且如果您要处理非关联数组并依赖于索引,请确保通过array_values()或类似方法运行它。 这将重置索引。 即使您执行某些像$ myArray [count($ myArray)-1]这样琐碎的事情,甚至某些本机array_ *函数也不会总是重置它,这可能导致很多挫败感,索引可能不再存在。

这里没有区别。 unset删除变量; 如果您想删除变量 ,请使用它 此后立即重新声明相同的变量与简单地覆盖其内容开始相同。

在这种情况下,您无需unset因为您再次使用它来存储其他一些值。

但是,如果您不想在同一代码中再次使用此变量,则应unset变量。

我个人将unset用于会话变量。 因为如果不使用会话变量,而不是为什么要在会话中存储会话会话,因为会话变量会占用Server中的空间,因此可能会导致服务器停机。

在您的情况下,无需使用unset。 但是请考虑以下情况:您不希望数组中的任何键会导致应用程序中断其流程。 例如:查询生成器,它接受要插入数据库的数据数组,并且该数组由key => value对组成,其中key与表中的列名相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM