$ data = array()vs unset($ array)

时间:2012-03-01 11:06:02

标签: php arrays optimization unset

这是我的第一个问题。

我正在对PHP脚本进行一些优化,提高了执行速度......

之间:

$datas = array();
$datas['file_import'] = $file_name_reporting;

并且:

unset($datas);
$datas['file_import'] = $file_name_reporting;

有人能告诉我哪一个更快吗?

谢谢

6 个答案:

答案 0 :(得分:2)

您的第二个示例会导致警告,因为$datas现在是null并且您将其视为数组,因此您必须先将其声明为空数组。

所以,只需按照你的第一个例子 - 分配一个空数组,然后输入一些数据。

答案 1 :(得分:1)

array()将创建一个数组,而unset()将销毁一个变量。

答案 2 :(得分:1)

我认为第一种方法只是覆盖,但第二种方法包括删除,检查存在,触发警告和创建新数组

答案 3 :(得分:1)

声称任何一种形式比另一种形式“更快”是荒谬的。两个版本都会执行得如此之快,以至于您需要在循环内运行数百万次才能注意到差异。你真的在你的脚本中做到了吗?如果没有,请忘记这里的“优化”(实际上,任何经验丰富的开发人员都可以告诉你,最好不要忘记所有优化),这是个好主意。

最重要的是,这两个版本做了不同的事情,因为unset将从sumbol表中删除名称$datas(并在尝试向数组添加值时的下一行。

只需使用感觉正确的内容,并查看重型循环内部以找到要优化的内容。

答案 4 :(得分:1)

在这两种情况下,都会构建一个新的数组。在php中取消设置变量,将其值设置为null,仅调用下一行的数组构造函数。虽然我同意knittl,但我的建议是:

$datas = array('file_import' => $file_name_reporting);

通过创建一个新数组,您可以自动“取消设置”该变量,并通过将值传递给数组构造函数,您可以使用您想要的任何值填充数组。

答案 5 :(得分:1)

显然,第一个代码将更快地运行,因为您只执行两个操作:显式创建数组并添加一部分数据。第二个示例将导致警告,因为您销毁变量然后再次尝试使用它。

此外unset不会释放已用内存,它只会释放变量指针。运行gc时将释放内存。要释放内存,请改用$datas = null;