2012-03-05 12 views
5

मेरे पास एक सरणी है जिसमें लगभग 12 संभावित कुंजी/मान जोड़े हैं। यह एक _POST/_GETPHP कुंजी/मान रखने के दौरान रिक्त, शून्य ऐरे कुंजी/मान हटाएं अन्यथा खाली/शून्य

कुंजी 0-n में संख्यात्मक नहीं हैं, और मुझे लागू होने वाले मूल्यों के साथ कुंजी को बनाए रखने की आवश्यकता है। मेरा मुद्दा यह है कि मुझे पता है कि अवसर पर एक कुंजी पारित की जाएगी जहां मूल्य शून्य, खाली, या बराबर है। अगर इस मामले में मैं अपनी सरणी संसाधित करने से पहले उन चाबियों को ट्रिम करना चाहता हूं। बिना किसी चीज के लाइन को चलाने के रूप में मेरी स्क्रिप्ट तोड़ने जा रही है।

अब थोड़ी देर पहले मैंने या तो यह फ़ंक्शन बनाया या पाया (मुझे याद नहीं है कि यह मेरे शस्त्रागार में थोड़ी देर के लिए है, हालांकि किसी भी तरह से)।

function remove_array_empty_values($array, $remove_null_number = true) 
    { 
     $new_array = array(); 
     $null_exceptions = array(); 
     foreach($array as $key => $value) 
     { 
      $value = trim($value); 
      if($remove_null_number) 
      { 
       $null_exceptions[] = '0'; 
      } 
      if(!in_array($value, $null_exceptions) && $value != "") 
      { 
       $new_array[] = $value; 
      } 
     } 
     return $new_array; 
    } 

मुझे क्या करना प्यार होता क्या, बहुत ही इस के समान है लेकिन इस सरणियों nn कुंजी मान हो सकते हैं उस के साथ अच्छी तरह से काम करता है और मैं नहीं कुंजी पर निर्भर के साथ-साथ निर्धारित करने के लिए मूल्य के रूप में कर रहा हूँ क्या क्या कहाँ और कब। उपर्युक्त के रूप में बस मूल रूप से सबकुछ हटा देगा, फिर सरणी को फिर से बनाया जाएगा। जहां मैं फंस गया हूं, यह पता लगाने की कोशिश कर रहा है कि उपर्युक्त फ़ंक्शन की नकल कैसे करें, लेकिन जहां मुझे आवश्यक चाबियां बरकरार रखती हैं।

+1

जब तक मैं आवश्यकता नहीं समझ पाते, कि [ 'array_filter()'] (http का सही समारोह है: //us3.php.net/manual/en/function.array-filter.php) –

+0

संभावित डुप्लिकेट [PHP सरणी से शून्य मान निकालें] (http://stackoverflow.com/questions/2287404/remove-zero- मूल्य-से-ए-php-array) – hakre

उत्तर

10

क्या आप के बाद कर रहे हैं, तो आप array_filter() उपयोग कर सकते हैं या आप कुछ इस तरह कर सकते हैं अगर मैं सही ढंग से समझ:

foreach($myarray as $key=>$value) 
{ 
    if(is_null($value) || $value == '') 
     unset($myarray[$key]); 
} 
+1

आप अधिक व्यापक होने के लिए 'if (खाली ($ मान)) 'का उपयोग करना चाह सकते हैं। –

+0

@ जॉर्ज कॉमिन: सहमत हैं, यह एक विकल्प है। आंतरिक रूप से, यह वही बात करता है - है ना? –

+0

'खाली()' अधिक व्यापक है क्योंकि यह 0, झूठी, "0", 0.0, खाली सरणी आदि के लिए भी जांच करता है। यह पढ़ने और बनाए रखने के लिए थोड़ा आसान भी है। –

4

array_filter एक अंतर्निहित फ़ंक्शन है जो आपको वही करता है जो आपको चाहिए। सबसे अधिक आपको अपनी कॉलबैक प्रदान करने की आवश्यकता होगी जो तय करता है कि कौन से मूल्य रहते हैं और जो हटा दिया जाता है। फ़ंक्शन विवरण बताते हैं कि चाबियाँ स्वचालित रूप से संरक्षित की जाएंगी।

उदाहरण के लिए:

// This callback retains values equal to integer 0 or the string "0". 
// If you also wanted to remove those, you would not even need a callback 
// because that is the default behavior. 
function filter_callback($val) { 
    $val = trim($val); 
    return $val != ''; 
} 

$filtered = array_filter($original, 'filter_callback'); 
6

आप के लिए एक त्वरित तरीका चाहते हैं नल, फाल्स और खाली स्ट्रिंग्स ("") को हटाएं, लेकिन 0 (शून्य) के मान छोड़ दें, आप कॉलबैक फ़ंक्शन के रूप में मानक php फ़ंक्शन स्ट्रेल का उपयोग कर सकते हैं:

// removes all NULL, FALSE and Empty Strings but leaves 0 (zero) values 
$result = array_filter($array, 'strlen'); 

स्रोत: http://php.net/manual/en/function.array-filter.php#111091

0

अपने प्रमुख चर के साथ प्रयोग के +1 सरणी में अशक्त कुंजी छोड़

foreach($myarray as $key=>$value) 
{ 
    echo $key+1; //skip null key 
} 
संबंधित मुद्दे