簡體   English   中英

如何在保持其鍵的同時清除PHP數組中的值?

[英]How do I clear the values in a PHP array while maintaining its keys?

我想在保持其鍵的同時獲取一個數組並清除其所有值。 “清除”是指用空類型值替換,例如''或null。 PHP顯然有很多數組函數 ,但我沒有找到任何正確的函數 我目前正在這樣做:

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

我的問題是,是否有一些我忽略的內置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_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM