我想获取一个数组并清除其所有值,同时保留其键。“清除”是指替换为空类型值,例如 '' 或 null。PHP 显然有很多数组函数,但我没有找到任何可以做到这一点的东西。我目前正在这样做:
foreach ($array as &$value) $value = ''
我的问题是,是否有一些我忽略的内置 php 函数,或者我可以通过任何其他方式来完成此任务,而无需在此级别上迭代数组?
最简单的方法是 array_map
$array = array_map(function($x) { return '';}, $array);
如果不确切知道您的内存/性能/对象管理需求是什么,很难说什么是最好的。这里有一些“我只是想要一些简短的”替代方案:
$array = array_fill_keys(array_keys($a),""); // Simple, right?
$array = array_map(function(){return "";},$a); // More flexible but easier to typo
如果您有一个通过引用传递的数组并且真的想擦除它,那么直接迭代可能是您最好的选择。
foreach($a as $k => $v){
$a[$k] = "";
}
引用迭代:
/* This variation is a little more dangerous, because $v will linger around
* and can cause bizarre bugs if you reuse the same variable name later on,
* so make sure you unset() it when you're done.
*/
foreach($a as $k => &$v){
$v = "";
}
unset($v);
如果您有性能需求,我建议您使用适当大小的数组和 PHP 版本自己对这些进行基准测试。
您可以使用array_keys
来获取密钥。然后,您可以根据需要使用array_flip
,尽管这会将值 0 到 length-1 分配给键。
没有单一的内置函数。你可以试试:
array_combine(array_keys($array),array_fill(0,count($array)-1,""));
但实际上,您现在拥有的代码可以很好地完成这项工作。