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

Php 如果可以使用相同的变量名重新声明,为什么要使用unset()清除数组?,php,Php,我想知道我是否处于这种情况: $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); 这和清除数组的方法相同。那么什

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

$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()
,并再次将其反转为原始排序

但对于简单地重新定义变量,您不需要使用它。马上重新申报

另一个用例可以是自己编写的数组过滤器:

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

已从@Michael导入评论:


。。如果您处理的是非关联数组,并且依赖于索引,请确保通过数组_values()或类似的方式运行它。这将重置索引。即使是一些本机数组函数也不会总是重置它,如果您执行像$myArray[count($myArray)-1]这样琐碎的操作,索引可能不再存在,这可能会导致很多挫折

例如,您可以使用
unset()
清除数组的某些部分

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

但对于简单地重新定义变量,您不需要使用它。马上重新申报

另一个用例可以是自己编写的数组过滤器:

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

已从@Michael导入评论:


。。如果您处理的是非关联数组,并且依赖于索引,请确保通过数组_values()或类似的方式运行它。这将重置索引。即使是一些本机数组函数也不会总是重置它,如果您执行像$myArray[count($myArray)-1]这样琐碎的操作,索引可能不再存在,这可能会导致很多挫折


在这种情况下,您不需要取消设置,因为您再次使用它来存储一些其他值

但是,如果不想在同一代码中再次使用此变量,则应
取消设置变量


我个人使用unset作为会话变量。因为如果没有会话变量的用途,除了为什么要存储在会话中,因为会话变量占用了服务器的空间,这可能会导致服务器停机。

在这种情况下,您不需要取消设置
,因为您再次使用它来存储一些其他值

但是,如果不想在同一代码中再次使用此变量,则应
取消设置变量


我个人使用unset作为会话变量。因为如果没有使用会话变量,除了为什么要存储在会话中,因为会话变量占用了服务器中的空间,这可能会导致服务器停机问题。

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

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

无需使用
unset
在这种情况下,当存在要删除的特定变量时,可以使用
unset
。也可以是数组键。在您的示例中,您使用相同的标识符(相同的变量名)重新创建了数组。使用
unset
的一个好例子是,如果使用
unset($data['red'])
-数组将从3个元素减少到2个元素。在这种情况下,无需使用
unset
。当存在要删除的特定变量时,可以使用
unset
。也可以是数组键。在您的示例中,您使用相同的标识符(相同的变量名)重新创建了数组。使用
unset
的一个好例子是,如果使用
unset($data['red'])-您的数组将从3个元素减少到2个元素。。。如果您处理的是非关联数组,并且依赖于索引,请确保通过
array\u values()。这将重置索引。@Michael将您的评论导入我的答案中,谢谢。即使是一些本机的
array.*
函数也不会总是重置它,如果您执行像
$myArray[count($myArray)-1]这样的琐碎操作,索引可能不再存在,这可能会导致很多挫折。。。如果您处理的是非关联数组,并且依赖于索引,请确保通过
array\u values()。这将重置索引。@Michael将您的评论导入我的答案中,谢谢。即使是一些本机的
array.*
函数也不会总是重置它,如果您执行像
$myArray[count($myArray)-1]这样的琐碎操作,索引可能不再存在,这可能会导致很多挫折。