[英]How do I alter array keys and values while using a RecursiveArrayIterator?
[英]How do I clear the values in a PHP array while maintaining its keys?
如果不確切知道您的內存/性能/對象管理需求是什么,很難說什么是最好的。 這里有一些“我只是想要一些簡短的”替代方案:
$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,""));
但是你現在擁有的代碼真的可以完成這項工作。
最簡單的方法是array_map
$array = array_map(function($x) { return '';}, $array);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.