使用 foreach 循环清除 PHP 数组值的效率

新手上路,请多包涵

清除数组中的所有值哪个更有效?第一个将要求我在第二个示例的循环中每次都使用该函数。

 foreach ($array as $i => $value) {
    unset($array[$i]);
}

或这个

foreach($blah_blah as $blah) {
    $foo = array();
    //do something
    $foo = null;
}

我不想使用 unset() 因为这会删除变量。

原文由 el_pup_le 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 717
2 个回答

就像 Zack 在下面的评论中所说的那样,您可以使用简单地重新实例化它

$foo = array(); // $foo is still here

如果您想要更强大的东西,请使用 unset 因为它也会从符号表中清除 $foo,如果您稍后需要该数组,只需再次实例化它。

 unset($foo); // $foo is gone
$foo = array(); // $foo is here again

如果我们谈论的是非常大的桌子,我可能会推荐

$foo = null;
unset($foo);

因为这也会更好地清除内存。然而,这种行为 (GC) 并不是很稳定,并且可能会随着 PHP 版本的变化而变化。请记住,重新实例化结构与清空结构不同。

原文由 Eric Herlitz 发布,翻译遵循 CC BY-SA 4.0 许可协议

[] 比 array() 快近 30%,类似于将新元素推送到数组 \(array\[\] = \)newElement 然后 array_push(\(array, \)newElement) (请记住,array_push 仅对单个或 2 个新元素较慢)

原因是我们跳过开销函数来调用那些

方法和变量声明中的 PHP 数组 vs [ ]

原文由 Damian Chudobiński 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题