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


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

这是我的第一个问题。

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

之间:

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

和:

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

有人可以告诉我哪个更快吗?

谢谢

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

因此,只需按照您的第一个示例进行操作 - 分配一个空数组,然后将一些数据放入其中。

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

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

声称任何一种形式都比另一种形式"更快"是荒谬的。这两个版本的执行速度都非常快,以至于您需要在循环中运行它们数百万次才能注意到差异。你真的在你的脚本中这样做吗?如果没有,请忘记这里的"优化"(实际上,正如任何有经验的开发人员都可以告诉您的那样,"通过眼睛"忘记所有优化是个好主意(。

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

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

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

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

通过创建新数组,您可以自动"取消设置"变量,通过将值传递给数组构造函数,您可以在使用数组时用所需的任何值填充数组。

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

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