【发布时间】:2013-08-13 09:04:13
【问题描述】:
注意:似乎我对发生的事情有误,使用$a = array(); 没有问题。这是因为对数组的所有分配都是通过复制进行的。 (我原以为有一些引用访问会导致问题 - 但这只是一个错字。我在下面的答案中添加了一些细节。
我有一些看起来像这样的 PHP:
$myArray = array();
function useArray() {
global $myArray;
// ... do something with myArray ...
}
function clearArray() {
global $myArray;
// ... Somehow clear the global array ...
}
我知道从设计的角度来看这很糟糕,但是需要解决一些我无法更改的第三方代码...
我的问题是我可以在clearArray 函数中添加什么来使其工作?
使用 我想我可以遍历数组中的键并取消设置每个反过来 - 像这样:$myArray=array(); 或unset($myArray); 的通常建议不起作用,因为它们只更改本地版本,而不是全局版本。
function clearArray() {
global $myArray;
foreach($key in array_keys($myArray) ) {
unset( $myArray[$key] );
}
}
但这似乎很老套且不清楚。有没有更好的解决方案?
【问题讨论】:
-
那个“hacky”版本有用吗?
-
$myArray = []有效——你得到不同的结果吗? -
我的测试表明
$myArray = array();工作正常 - 你有什么问题? -
查看:[php stackoverflow.com/questions/4826066/…
-
@SmokeyPHP - 你是绝对正确的。我对数组分配与对象分配的一些混淆,加上我的部分代码中缺少“全局”,导致我得出错误的结论。
标签: php