如何在维护PHP数组键的同时清除该数组中的值?

如何在维护PHP数组键的同时清除该数组中的值?,php,arrays,Php,Arrays,我想获取一个数组并清除它的所有值,同时维护它的键。“clear”是指替换为空类型值,如“”或null。PHP显然有很多,但我没有发现任何能做到这一点的东西。我目前正在这样做: foreach ($array as &$value) $value = '' 我的问题是,是否有我忽略的一些内置php函数,或者我可以通过任何其他方式来实现这一点,而无需在这个级别上迭代数组?您可以使用数组\u键来获取键。然后,如果愿意,可以使用array\u flip,尽管这会将值0到length-1分配给键

我想获取一个数组并清除它的所有值,同时维护它的键。“clear”是指替换为空类型值,如“”或null。PHP显然有很多,但我没有发现任何能做到这一点的东西。我目前正在这样做:

foreach ($array as &$value) $value = ''

我的问题是,是否有我忽略的一些内置php函数,或者我可以通过任何其他方式来实现这一点,而无需在这个级别上迭代数组?

您可以使用
数组\u键
来获取键。然后,如果愿意,可以使用
array\u flip
,尽管这会将值0到length-1分配给键

没有一个单独的内置函数用于此。您可以尝试:

array_combine(array_keys($array),array_fill(0,count($array)-1,""));

但实际上,您现在拥有的代码可以很好地完成这项工作。

您可以使用
array\u keys
获取密钥。然后,如果愿意,可以使用
array\u flip
,尽管这会将值0到length-1分配给键

没有一个单独的内置函数用于此。您可以尝试:

array_combine(array_keys($array),array_fill(0,count($array)-1,""));

但实际上,您现在拥有的代码可以很好地完成这项工作。

最简单的方法是数组映射

$array = array_map(function($x) { return '';}, $array);

最简单的方法是数组映射

$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 = 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),“”)数组填充键(数组填充键($array),“”)