2012-01-06 15 views
7

Aynı dizide 3 yerel işlevi çalıştırmak istiyorum: trim, strtoupper ve mysql_real_escape_string. Bu yapılabilir mi? Böyle bir geri arama bir dizi geçirilecek çalışılıyorArray_Map birden fazla yerel geri arama kullanarak mı?

çalışmıyor:

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

sadece geri arama gibi bir doğal işlevini kullanarak çünkü bu iyi çalışıyor olsa da:

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

cevap

10

You' böyle bir şekilde yapmak zorunda edeceğiz:

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

(Bu örnek i olarak PHP 5.3+ gerektirir

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

falan: t Ayrıca böyle bir şey yapabileceğini anonim işlevlerin kullanılmasını)

+0

Ben de böyle anladım; Bu geri arama için ayrı bir işlev yazma sonuna ihtiyacım var. Ne yazık ki, hala anonim olmayan bir işlev yapmak zorunda kaldım, PHP 5.2.17 hala sıkışmış, hala harika çalışıyor. Teşekkürler! =) –

+0

Harika çözüm. yes it izz –

4

yapar. Tüm bunları yapan anonim bir işlevle geçin.

Bu yardımcı olur umarım.

İyi şanslar :)

5

Evet, sadece başka bir bir haritalama sonucunu pass:

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

Ayrıca PHP bir geri arama kullanabilirsiniz 5.3+:

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

veya Daha önce (PHP'nin 5.3'ten daha küçük sürümlerinde):

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

@TimCooper: Olası çözümleri gösteriyorum - eğer array_map kullanılmalıysa en az 3 tanesi var. Ama evet, aslında PHP onu en uygun hale getirmiyor, çünkü diziyi (her defasında farklı) 3 kez yürüyor ve 3 kez tüm diziyi döndürüyor. – Tadeck

İlgili konular