2013-08-01 35 views
12

Ben array_map herearray_map satır içi anonim işlev

ile satır içi anonim fonksiyon test ve işe yaradı ama user_meta ile aynı çalıştığımızda

$user_meta = Array ([interest] => Array ([0] => Array) [type] => 
    Array ([0] => Array) [user_status] => Array ([0] => deny) 
    [firstname] => Array ([0] =>) [lastname] => Array ([0] => B) 
    [email] => [email protected]) 

    $user_meta = array_map(function($a) { return $a[0]; },$user_meta); 

"Ayrıştırma hatası .. çalışmıyor: beklenmeyen yazım hatası,

here is the test link showing error

+4

var inline anonim işlevler sadece PHP 5.3 + –

+0

Dip not için biçimlendirilmiş print_r() çıktısı, $ user_meta dizinin Sizin tanımınız bir PHP dizisi için geçerli değil –

+0

@Paulpro'da çalışır. Biçim değişikliğini neden geri aldınız? – jmattheis

cevap

10

"in T_FUNCTION, bekliyor ')', array_map hattı ile yanlış bir şey yok ama ondan önceki her şey yanlış. Bu, PHP kodunun değil print_r'un çıktısıdır. Gönderdiğiniz iki bağlantıdaki diziyi nasıl tanımladığınızı karşılaştırın.

+0

Ben argüman ile dizisi geçerken aynı hatayı alıyorum ... Ben sadece açıkça işlevini çağırarak çalışabilirdi .. [burada] (http://3v4l.org/F0Sac) –

+0

Hangi PHP sürümü var mı? Çoğu insanın şu anda en az 5.3 olması ve kodun 5.3 ve üstü kadar iyi çalıştığını. – Paulpro

+0

Ben php 5.5 kullanıyorum sadece güncel bağlantıyı kontrol edebilirsiniz .. hata gösteriyor –

12

Umarım bu yardımcı olur: Anahtar kelime işlevi ve parametreleri arasında boşluk veya daha fazlası olmalıdır. Yani bu çalışması gerekir:

$user_meta = array_map(function ($a) { return $a[0]; },$user_meta); 
, insan okunabilirlik
+0

Bu, "anahtar kelime işlevi ile parametreleri arasında boşluk olması gereken" ifadesi dışında iyi bir yanıttır. Çünkü alanı kaldırdım ve problemim yok. –