我想在保持其键的同时获取一个数组并清除其所有值。 “清除”是指用空类型值替换,例如''或null。 PHP显然有很多array functions,但我没有找到任何确实如此的东西。我目前正在这样做:
foreach ($array as &$value) $value = ''
我的问题是,是否有一些我忽略的内置php函数,或者我可以在没有迭代这个级别的数组的情况下完成任何其他方式?
答案 0 :(得分:2)
如果不确切知道您的内存/性能/对象管理需求是什么,很难说什么是最好的。这里有一些“我只是想要一些简短的”替代品:
$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版本自己进行基准测试。
答案 1 :(得分:1)
您可以使用array_keys
获取密钥。然后,您可以根据需要使用array_flip
,但这会将值0到长度1分配给键。
没有单一的内置功能。你可以试试:
array_combine(array_keys($array),array_fill(0,count($array)-1,""));
但是你现在拥有的代码真的可以完成这项工作。
答案 2 :(得分:1)
最简单的方法是array_map
$array = array_map(function($x) { return '';}, $array);