注意:似乎我对正在发生的事情错了,并且使用$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] );
}
}
但这似乎很老套且不清楚。有更好的解决方案吗?