我需要從數組中刪除一些鍵。php優雅鍵不固定
$array = array('a' => 'a', 'b' => 'b', 'c' => 'c');
unset($array['a']);
unset($array['b']);
我該如何做到這一點更優雅?也許有這樣的功能array_keys_unset('a', 'b')
?
我不需要array_values
或foreach
。我只想知道這是否可能。
預先感謝您。對不起,我的英語和孩子般的問題。
我需要從數組中刪除一些鍵。php優雅鍵不固定
$array = array('a' => 'a', 'b' => 'b', 'c' => 'c');
unset($array['a']);
unset($array['b']);
我該如何做到這一點更優雅?也許有這樣的功能array_keys_unset('a', 'b')
?
我不需要array_values
或foreach
。我只想知道這是否可能。
預先感謝您。對不起,我的英語和孩子般的問題。
你可以做到這一點與單一調用unset
爲:
unset($array['a'],$array['b']);
就個人而言,我只想做到這一點,如果我有鑰匙的長/任意列表設置:
foreach (array('a', 'b') as $key) unset($array[$key]);
你可以使用像array_diff_key()
這樣的數組函數的組合,但我認爲上面是最容易記住的。
不,沒有預定義的功能,如array_keys_unset
。
您既可以通過unset
多個變量:
unset($array['a'], $array['b']);
或者你寫一個這樣的array_keys_unset
自己:
function array_keys_unset(array &$arr) {
foreach (array_slice(func_get_args(), 1) as $key) {
unset($arr[$key]);
}
}
那麼該函數的調用將類似於你:
array_keys_unset($array, 'a', 'b');
+1最乾淨的所有解決方案,雖然我討厭PHP的array_xxx方法命名。我們稱之爲別的......例如'strip_keys'。 – aefxx 2010-12-10 15:04:04
unset()
is as s儘可能實現,但作爲另一個解決方案呢?
$keys_to_remove = array_flip(array('a', 'b'));
$array = array_diff_key($array, $keys_to_remove);
放入功能:
function array_unset_keys(array $input, $keys) {
if (!is_array($keys))
$keys = array($keys => 0);
else
$keys = array_flip($keys);
return array_diff_key($input, $keys);
}
$array = array_unset_keys($array, array('a', 'b'));
或者你甚至可以通過它傳遞可變數量的參數,這樣使它unset()
樣:
function array_unset_keys(array $input) {
if (func_num_args() == 1)
return $input;
$keys = array_flip(array_slice(func_get_args(), 1));
return array_diff_key($input, $keys);
}
$array = array_unset_keys($array, 'a', 'b');
+1:最好的非平凡解。 – Matthew 2010-12-10 14:57:48
在這裏,我在寫一個函數。 +1 – Stephen 2010-12-10 14:54:11
@Stephen:語言構造>功能:P – BoltClock 2010-12-10 14:55:22