哪个清除数组中的所有值更有效?第一个要求我每次在第二个例子的循环中使用该函数.
foreach ($array as $i => $value) {
unset($array[$i]);
}
Run Code Online (Sandbox Code Playgroud)
或这个
foreach($blah_blah as $blah) {
$foo = array();
//do something
$foo = null;
}
Run Code Online (Sandbox Code Playgroud)
Eri*_*itz 234
就像Zack在下面的评论中所说,你可以简单地使用它来重新实例化它
$foo = array(); // $foo is still here
Run Code Online (Sandbox Code Playgroud)
如果你想要更强大的东西使用unset,因为它也将从符号表中清除$ foo,如果你稍后需要该数组再次实例化它.
unset($foo); // $foo is gone
$foo = array(); // $foo is here again
Run Code Online (Sandbox Code Playgroud)
mpe*_*pen 77
如果您只想将变量重置为空数组,则只需重新初始化即可:
$foo = array();
Run Code Online (Sandbox Code Playgroud)
请注意,这将保留对它的任何引用:
$foo = array(1,2,3);
$bar = &$foo;
// ...
$foo = array(); // clear array
var_dump($bar); // array(0) { } -- bar was cleared too!
Run Code Online (Sandbox Code Playgroud)
如果要中断对它的任何引用,请先取消设置:
$foo = array(1,2,3);
$bar = &$foo;
// ...
unset($foo); // break references
$foo = array(); // re-initialize to empty array
var_dump($bar); // array(3) { 1, 2, 3 } -- $bar is unchanged
Run Code Online (Sandbox Code Playgroud)
Wol*_*lvt 31
可悲的是,我无法回答其他问题,没有足够的声誉,但我需要指出一些对我来说非常重要的事情,我认为这对其他人也有帮助.
取消设置变量是一种很好的方法,除非你需要原始数组的引用!
为了弄清楚我的意思:如果你有一个使用数组引用的函数,比如一个排序函数
function special_sort_my_array(&$array)
{
$temporary_list = create_assoziative_special_list_out_of_array($array);
sort_my_list($temporary_list);
unset($array);
foreach($temporary_list as $k => $v)
{
$array[$k] = $v;
}
}
Run Code Online (Sandbox Code Playgroud)
它不工作!这里要小心,unset删除引用,以便$array再次创建并正确填充变量,但是不能从函数外部访问这些值.
因此,如果您有参考,您需要使用$array = array()而不是unset,即使它不那么干净和可理解.
Mad*_*iha 12
如果数组是关联的,我会说第一个.如果没有,请使用for循环:
for ($i = 0; $i < count($array); $i++) { unset($array[$i]); }
Run Code Online (Sandbox Code Playgroud)
虽然如果可能,使用
$array = array();
Run Code Online (Sandbox Code Playgroud)
最好将数组重置为空数组.