Bağımsız bir fonksiyon argümanları içine dizi çevirmek - howto?

3 Cevap php

Ben bir işlev çağrısı bağımsız değişkenler olarak bir dizi değerleri kullanmak istiyorum. Örnek:

// Values "a" ve "b"
$arr = array("alpha", "beta");
// ... vardır to be inserted as $a ve $b.
my_func($a, $b)
function my_func($a,$b=NULL) { echo "{$a} - {$b}"; }

Dizideki değerlerinin sayısı bilinmemektedir.

Olası çözümler:

  1. Ben tek bir argüman olarak dizi geçirebilirsiniz - ama birden fazla bağımsız işlev argümanlarını aktarması için tercih ediyorum.

  2. implode() virgülle ayrılmış bir dizeye dizi. (Sadece bir dize çünkü başarısız.)

  3. Tek bir parametre kullanılarak:

    $str = "'a','b'";
    function goat($str);  // $str needs to be parsed as two independent values/variables.
    
  4. Kullan eval()?

  5. Dizi Traverse?

Öneriler takdir edilmektedir. Teşekkürler.

3 Cevap

seni doğru anladıysam eğer:

$arr = array("alpha", "beta");
call_user_func_array('my_func', $arr);

listesini deneyin ()

// Values "a" and "b"
$arr = array("alpha", "beta");
list($a, $b) = $arr;
my_func($a, $b);

function my_func($a,$b=NULL) { echo "{$a} - {$b}"; }

Bunu yapabilirsiniz kullanarak call_user_func_array(). Bu (ve hatta PHP 5.3 beri lambda fonksiyonları ile) harikalar yaratıyor.