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]这样的琐碎操作,索引可能不再存在,这可能会导致很多挫折。