[PHP] Operacje matematyczne


(Adi Aj) #1

Witam,

Mam taki problem który wydawał się dość prosty. Otóż muszę podać wynik operacji matematycznej. W skrócie opiszę to tak:

<?php 

$wartosc_1 = 5;

$wartosc_2 = 2;

$operacja = 2*1*4*3;


$wynik = $wartosc_1*$wartosc_2/$operacja;

echo $wynik; 

?>

W zmiennej $wynik chcę otrzymać wynik operacji matematycznej 5*2/2*1*4*3.

Dla mnie poprawny wynik to 60 , a ciągle otrzymuje wynik 0,41.

Problem tkwi w tym, że on zamienia całe polecenie $operacja na jedną liczbę. Czy można to jakoś obejść?


(Spam) #2

Można, ale bardzo brzydką metodą, której nie powinieneś znać (eval).

Zamiast tego spróbuj sobie przeorganizować kod, np. rozdziel zmienną $operacja na dwie inne.


(cinkibolek) #3

eval(), który wbrew krążącym opiniom bardzo się przydaje, zobacz to:

<?php 

$wartosc_1 = 5;

$wartosc_2 = 2;

$operacja = "2*1*4*3";


$expression = "$wartosc_1*$wartosc_2/$operacja";

eval('$wynik = '.$expression.';');


echo $wynik; 

?>

albo wstaw liczby ze zmiennej $operacje do tablicy i przeleć po niej pętlą wykonując operację mnożenie w niej.


(Adi Aj) #4

Dlaczego się nie zaleca jej używania?

Za mocno obciąża system czy jak?


(cinkibolek) #5

Ze względu na security. eval() jest potencjalnie niebezpieczne.


(Adi Aj) #6

Już wszystko wiem :slight_smile: Dzięki Wam za pomoc! :slight_smile:


(soanvig) #7
<?php


function calcString($string)

{

    $liczba = create_function("", "return ({$string});" );


    return $liczba();

}


$a = "2+2";


echo calcString($a);


?>

Trochę mi zajęło odkrycie funkcji create_function i wymyślenie jej zastosowania, ale działa :smiley:


(R@z0r) #8

Oj ludzie, ludzi ;). Matematyka się kłania :wink: Zamykając to w zmienną dajesz to jak by w nawias. Wynik jest matematycznie poprawny. 10/24 = 0.41666666666667 :-D; Jak obejść zostało napisane ale to raczej jeden ze ślepych przykładów, bo w takiej formie jaką pokazałeś to zawinił program.