PHP fonksiyon geri arama operatörleri kullanabilir miyim?

4 Cevap php

Ben aşağıdaki işlevi ettik varsayalım:

function mul()
{
   return array_reduce(func_get_args(), '*');
}

Bir geri çağırma işlevi olarak * operatörü kullanmak mümkün mü? Başka bir yolu var mı?

4 Cevap

Sağladığınız kod işe yaramaz ama benzer bir şey yapabilirsiniz.

function mul()
{
   return array_reduce(func_get_args(), create_function('$a,$b', 'return "$a * $b'));
}

create_function işlev sonra artık bir deyim oluyor eğer bu işi yapmak için gerçek bir işlevi oluşturmak için daha iyi, kısa işlev (tek astar) oluşturmanıza olanak sağlar.

Ayrıca bunları değiştirmek için denemek için PHP istemiyorum bu yüzden dolar sembolünü kullanarak çünkü tek tırnak önemli olduğunu lütfen unutmayın.

Ben senin fonksiyonunu tanımlamak ve sonra bunu yaparsanız:

$arr = array(2,3,4,5,6);
mul($arr);

Ben şu uyarıyı alıyorum:

Warning: array_reduce(): The second argument, '*', should be a valid callback in /home/azanar/Documents/Projects/testbed/test.php on line 6

Burada diğer iki cevaplar Bunu yapmanın bir çalışma yolunu ele iyi yapmak. Şey sadece deneyin ve neler olacağını görmek için, belirli bir dil izin verilir eğer merak Ancak, bu genellikle iyi bir alışkanlıktır. Bazı diller izin ne sürpriz olabilir ve onlar yok, onlar hemen her zaman anlamlı hata mesajının çeşit vermek için gidiyoruz.

PHP 5.3 kilitler vardır ;)