2010-11-18 30 views
2

Bir dizgideki f (x) matematik fonksiyonunu hesaplamak mümkün mü? Böyle bir şey:PHP: Bir dize içinde f (x) matematik fonksiyonu hesaplayın

$function = '2x+3'; 
$x = 4; 
math_function($function, $x); //Shoud produce 11 

Ben php.net veya Google ile böyle görevler için bir kütüphane bulamıyorum, ama bu istediği ilk kişi benim öyle değil mi?

cevap

3

o ekinler zaman bu soruya benim standart cevap:

eval kullanmak (Formül kullanıcı girişi içeren özellikle) veya kendi formülü ayrıştırıcı yazarak tekerleği yeniden icat etmeyin.

PHPClasses üzerinde evalMath sınıfına bir göz atın. Güzel güvenli bir kum havuzunda istediğin her şeyi yapmalı.

+0

+1 ... Matematik formül ayrıştırıcısı oluşturmak büyük bir akademik sorundur (önemsiz olmayan bir çözüm sağlayan çok iyi tanımlanmış kenar durumları olduğundan). Ama pratik bir sorun açısından, onun için yapılmış araçlar olduğu için çabaya değmez ... – ircmaxell

+0

Vay, bu hızlı oldu! Çok teşekkür ederim. Eval'ın() varlığını bile bilmiyordum! Bi 'bakacağım. – Woutb21

+0

Kafam karıştı: "Eval'ı kullanmayın" diyorsunuz ve tam olarak bunu yapan bir sınıfın kullanılmasını tavsiye ediyorsunuz. (Hala ops problemini çözen mükemmel bir cevap. Bu yüzden +1, evalMath kodu beni kusmak istiyorsa bile;)) – edorian