2012-01-06 13 views
7

मैं एक ही सरणी पर 3 मूल कार्यों को चलाने के लिए चाहता हूं: trim, strtoupper और mysql_real_escape_string। क्या यह किया जा सकता है?कई मूल कॉलबैक का उपयोग कर Array_Map?

इस तरह एक कॉलबैक के रूप में एक सरणी पारित करने के लिए कोशिश कर रहा है काम नहीं कर रहा:

$exclude = array_map(array('trim','strtoupper','mysql_real_escape_string'), explode("\n", variable_get('gs_stats_filter', 'googlebot'))); 

हालांकि यह ठीक काम करता है क्योंकि यह केवल कॉलबैक के रूप में एक देशी समारोह उपयोग कर रहा है:

$exclude = array_map('trim', explode("\n", variable_get('gs_stats_filter', 'googlebot'))); 

उत्तर

10

आप ' इसे इस तरह से करना होगा:

$exclude = array_map(function($item) 
{ 
    return mysql_real_escape_string(strtoupper(trim($item))); 
}, explode("\n", variable_get('gs_stats_filter', 'googlebot'))); 

(इस उदाहरण के लिए PHP 5.3+ की आवश्यकता है

$exclude = array_map(function($item) { 
    return trim(strtoupper(mysql_real_escape_string($item))); 
    }, explode(...)); 

या कुछ और: टी तुम भी कुछ ऐसा कर सकता है

+0

यही मैंने पाया था; कि मुझे कॉलबैक के लिए एक अलग फ़ंक्शन लिखना समाप्त करना होगा। दुर्भाग्य से मैं अभी भी PHP 5.2.17 पर फंस गया हूं इसलिए मुझे एक गैर-अज्ञात फ़ंक्शन बनाना पड़ा, लेकिन, यह अभी भी बहुत अच्छा काम करता है। धन्यवाद! =) –

+0

ग्रेट समाधान। हाँ यह izz –

4

गुमनाम कार्यों का उपयोग) में आता है। एक अज्ञात फ़ंक्शन में पास करें जो वह सब कुछ करता है।

उम्मीद है कि मदद करता है।

गुड लक :)

5

हाँ, बस दूसरे में एक मानचित्रण का परिणाम पारित:

$result = array_map(
    'mysql_real_escape_string', 
    array_map(
     'trim', 
     array_map(
      'strtoupper', 
      $your_array 
     ) 
    ) 
); 

तुम भी PHP में एक कॉलबैक का उपयोग कर सकते 5.3+:

$result = array_map(function($x){ 
    return mysql_real_escape_string(trim(strtoupper($x))); 
}, $your_array); 

या पहले (5.3 से कम PHP के संस्करणों में):

$result = array_map(
    create_function('$x','return mysql_real_escape_string(trim(strtoupper($x)));'), 
    $your_array 
); 
+0

@TimCooper: मैं संभावित समाधान दिखा रहा हूं - उनमें से कम से कम 3 हैं, यदि 'array_map' का उपयोग किया जाना है। लेकिन हाँ, वास्तव में PHP इसे इष्टतम नहीं बनाता है, क्योंकि यह सरणी (हर बार यह अलग होता है) 3 बार चलता है और पूरे सरणी को 3 बार देता है। – Tadeck

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