![](/img/trans.png)
[英]Is it valid to re-declare or override an instance variable through inheritance?
[英]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.