Php $data=array()与unset($array)

Php $data=array()与unset($array),php,arrays,optimization,unset,Php,Arrays,Optimization,Unset,这是我的第一个问题 我正在对php脚本进行一些优化,提高其执行速度 在: $datas = array(); $datas['file_import'] = $file_name_reporting; 以及: 谁能告诉我哪一个更快 谢谢您的第二个示例会引起警告,因为$datas现在是null,您将其视为一个数组,因此必须在之前将其声明为空数组 所以只需遵循第一个示例-分配一个空数组,然后将一些数据放入其中。数组()将创建一个数组,而unset()将销毁一个变量。我认为第一个方法只是一个覆盖,但

这是我的第一个问题

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

在:

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

谁能告诉我哪一个更快


谢谢

您的第二个示例会引起警告,因为
$datas
现在是
null
,您将其视为一个数组,因此必须在之前将其声明为空数组


所以只需遵循第一个示例-分配一个空数组,然后将一些数据放入其中。

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

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

声称其中一种形式比另一种“更快”是荒谬的。这两个版本的执行速度都非常快,您可能需要在一个循环中运行它们数百万次才能发现差异。你真的在剧本里这么做了吗?如果不是的话,请忘记这里的“优化”(事实上,就像任何有经验的开发人员可以告诉您的那样,“通过眼睛”忘记所有优化是一个好主意)

除此之外,这两个版本实际上做了不同的事情,因为
unset
将从sumbol表中删除名称
$datas
(并在下一行尝试向数组添加值时发出通知)


只需使用感觉合适的方法,并在重循环中查找要优化的内容。

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

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

通过创建一个新数组,您可以自动“取消设置”变量,并通过将值传递给数组构造函数,您可以在数组中填充所需的任何值

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


另外,
unset
不会释放已用内存,它只会释放变量上的指针。运行gc时将释放内存。要释放内存,请使用
$datas=null取而代之。

»过早优化是万恶之源«我怀疑这行代码是您代码的瓶颈……我的错!我忘了说$datas里面有很多元素。它是否改变了答案?不,它不会改变我的答案。只需将一个空数组分配给
$datas
,然后忘记
取消设置
——在这里它是无用的。
$datas = array('file_import' => $file_name_reporting);