2011-07-01 20 views
5

से मेल खाता है मैं एक सरणी है कि इस तरह दिखता है से निकाला जा रहा है तत्वों।एक सरणी जिसका मान निर्दिष्ट स्ट्रिंग

मैं इस शब्द को फ़िल्टर करने के लिए array_filter का उपयोग करने का प्रयास करता हूं, लेकिन array_filter सभी खाली मान भी हटा देगा।

मैं परिणाम इस तरह रहना चाहता हूँ:

 
Array ([0] => Vice President [1] => [2] => Treasurer) 

यह मेरा पीएचपी फिल्टर कोड है:

function filter($element) { 
    $bad_words = array('other'); 

    list($name, $extension) = explode(".", $element); 
    if(in_array($name, $bad_words)) 
    return; 

    return $element; 
} 

$sport_level_new_arr = array_filter($sport_level_name_arr, "filter"); 

$sport_level_new_arr = array_values($sport_level_new_arr); 

$sport_level_name = serialize($sport_level_new_arr); 

मैं किसी अन्य विधि का उपयोग कर सकते इस शब्द फिल्टर करने के लिए?

उत्तर

3
foreach($sport_level_name_arr as $key => $value) { 

    if(in_array($value, $bad_words)) { 
    unset($sport_level_name_arr[$key]) 
    } 

} 
+0

यह ओपी की तरह सरणी की मरम्मत नहीं करता है। – EdoDodo

+0

बहुत बहुत धन्यवाद ... आपकी स्क्रिप्ट मुझे सुरक्षित ... धन्यवाद – wyman

+0

हे एडोडाडो बस php फ़ंक्शन "array_values", – wyman

3

array_filter() सही कार्य है। सुनिश्चित करें कि आपके कॉलबैक फ़ंक्शन में सही तर्क है।

निम्नलिखित का प्रयास करें:

function other_test($var) { 
    // returns whether the value is 'other' 
    return ($var != 'other'); 
} 

$new_arr = array_filter($arr, 'other_test'); 

नोट: यदि आप सरणी पुन: अनुक्रमणिका करना चाहते हैं, तो आप $new_arr = array_values($new_arr); ऊपर के बाद कह सकते हैं।

2

यह दो सरणी बनाएगा और अंतर मिलेगा। दूसरी सरणी में हम बाहर करने के लिए तत्वों रखा जाएगा: कॉलबैक फ़ंक्शन सच रिटर्न

array_values(array_diff($arr,array("other"))); 
+0

सुंदर कोड। यह क्या करता है? –

+0

यह दो सरणी बनाएगा और दूसरी सरणी में अंतर मिलेगा, हम तत्वों को – Sreeraj

+0

को संपादित करने के लिए धन्यवाद देंगे, फीनिक्स – Sreeraj

0

हैं, तो इनपुट से वर्तमान मूल्य परिणाम सरणी में दिया जाता है। PHP Manual

तो तुम सुनिश्चित करें कि कोई खाली मान निकाल दिए बनाने के लिए return $element; के बजाय अपने filter(); समारोह में return true; की ज़रूरत है।

संबंधित मुद्दे