这是一个简单的编程问题,因为我不了解 PHP 如何在foreach
循环期间处理数组复制和取消设置。就像这样,我有一个来自外部源的数组,它以我想要更改的方式格式化。一个简单的例子是:
$myData = array('Key1' => array('value1', 'value2'));
但我想要的是这样的:
$myData = array([0] => array('MyKey' => array('Key1' => array('value1', 'value2'))));
所以我采用第一个$myData
并将其格式化为第二个$myData
。我对我的格式化算法完全没问题。我的问题在于找到一种节省内存的方法,因为这些数组可能有点笨拙。因此,在我的foreach
循环中,我将当前数组值复制到新格式中,然后从原始数组中取消设置我正在使用的值。例如:
$formattedData = array();
foreach ($myData as $key => $val) {
// do some formatting here, copy to $reformattedVal
$formattedData[] = $reformattedVal;
unset($myData[$key]);
}
这里呼吁unset()
一个好主意吗?即,它是否节省内存,因为我已经复制了数据并且不再需要原始值?或者,PHP 是否会自动垃圾收集数据,因为我没有在任何后续代码中引用它?
代码运行良好,到目前为止,我的数据集的大小可以忽略不计,无法测试性能差异。我只是不知道我以后是否要为一些奇怪的错误或 CPU 命中做好准备。
感谢您的任何见解。
-sR