2010-12-10 5 views
8

को अनसेट करना मुझे कुछ कुंजियों से निकालना होगा।php लालित्य कुंजी

$array = array('a' => 'a', 'b' => 'b', 'c' => 'c'); 
unset($array['a']); 
unset($array['b']); 

मैं यह और अधिक लालित्य कैसे कर सकता हूं? शायद इस array_keys_unset('a', 'b') जैसे कोई फ़ंक्शन है?
मुझे array_values या foreach की आवश्यकता नहीं है। मैं केवल यह जानना चाहता हूं कि यह संभव है।
अग्रिम धन्यवाद। मेरे अंग्रेजी और बचपन के प्रश्न के लिए खेद है।

foreach (array('a', 'b') as $key) unset($array[$key]); 

आप:

unset($array['a'],$array['b']); 

उत्तर

15

आपको लगता है कि के रूप में unset लिए एक फोन के साथ कर सकते array_diff_key() जैसे सरणी कार्यों के संयोजन का उपयोग कर सकते हैं, लेकिन मुझे लगता है कि उपर्युक्त याद रखना सबसे आसान है।

+3

यहाँ मैं लिख रहा था एक समारोह। +1 – Stephen

+0

@ स्टीफन: भाषा संरचनाएं> कार्य: पी – BoltClock

3

व्यक्तिगत रूप से, मैं सिर्फ यह है कि अगर मैं चाबियों का एक लंबा/मनमाना सूची सेट करने के लिए किया था करना होगा:

3

unset() के साथ क्या गलत है?

ध्यान दें कि आप unset($array['a'], $array['b']);

कर सकते हैं तुम भी एक आप का सुझाव दिया की तरह एक समारोह लिख सकता है, लेकिन मैं चर मापदंडों के बजाय एक सरणी का उपयोग करेंगे।

3

नहीं, 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'); 
+0

+1 सभी समाधानों में से सबसे साफ हालांकि मैं PHP की array_xxx विधि नामकरण से नफरत करता हूं। आइए इसे कुछ और कहें ... उदा। 'Strip_keys'। – aefxx

5

unset() एस के रूप में है जैसा लगता है उतना ही लागू होता है, लेकिन एक और समाधान के रूप में यह कैसे?

$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'); 
+0

+1: सबसे अच्छा गैर-तुच्छ समाधान। – Matthew