2011-03-23 13 views
6
benim array_walk daha argümanları geçmek nasıl bilmek istiyorum

..php array_walk'a daha fazla argüman nasıl iletilir?

$addresses = array('www.google.com', 'www.yahoo.com', 'www.microsoft.com'); 
$a = 'hey'; 
$b = 'hey'; 
array_walk($addresses, array($this, '_handle'), $a, $b); // $a and $b parameters doesn't get passed 

private function _handle($address,$a, $b) { 
     echo $address; // www.google.com 
     echo $a // 012 
     echo $b // 012 
} 

Nasıl Zaten parametreleri geçmek? 5'ten fazla parametreyi geçmem gerekiyor .. lütfen öğret bana .. teşekkürler!

+2

http://php.net/array_walk –

cevap

15

Üçüncü parametre karma veri türüdür. Eğer çok fazla parametreniz varsa, bunları bir Array - belki de onları adlandırmak için ilişkisel bir diziye sokmayı öneririm. Daha sonra o param dışına geri çekmek istiyorum:

$addresses = array('www.google.com', 'www.yahoo.com', 'www.microsoft.com'); 
$params = array('first','second'); 
array_walk($addresses, array($this, '_handle'), $params); 

private function _handle($address,$count, $params) { 
     echo $address; // www.google.com 
     echo $params[0]; // first 
     echo $params[1]; // second 
} 
+1

ohh tamam .. üzgünüm ben php kılavuzu anlamıyorum teşekkür ederim. userdata diyor ve ben bir dizi olduğunu hiç bir fikrim yok .. Teşekkürler adam –

+2

@Kevin: userdata * can * bir dizi olabilir, ne olursa olsun olabilir. Bir int, bir dize, bir nesne, bir dizi, vb. Olabilir. Bir dizi kullanılır, böylece birden çok değere sahip olabilirsiniz. –

4

Yalnızca kullanıcı verileri için bir bağımsız değişkene izin verilir. Değerlerinizi bir dizi olarak aktarmanızı öneririm.

array_walk($addresses, array($this, '_handle'), array($a, $b)); 
+0

size çok –

5

array_walk() geçirilen fonksiyon 2-3 parametre alır.

  1. Dizi değer (bir referans olarak, gerekirse)
  2. Dizi Anahtar
  3. özel veri (isteğe bağlı)

bir dizi geçiş array_walk için birden çok değişken geçmek için.

array_walk($addresses, array($this, '_handle'), array('a'=>$a, 'b'=>$b)); 

private function _handle($address, $k, $data){ 
    echo $address; 
    echo $data['a']; 
    echo $data['b']; 
} 
İlgili konular