Autor | Zpráva | ||
---|---|---|---|
WMPopi Profil |
#1 · Zasláno: 28. 1. 2011, 23:16:31
Ahoj,
řeším takový zvláštní problém - uživatel jedné aplikace má mít možnost si sestavovat vlastní vzorce pro výpočet čehosi. Názorně ukážu: v db mám uloženo slovně: "(castka * 12 * koeficient) / 100" potřebuju z toho dostat něco ve stylu: $pocet = ($zaznam["castka"] * 12 * $zaznam["koeficient"]) / 100; Nenapadá někoho jak na to? |
||
deathhead Profil * |
#2 · Zasláno: 29. 1. 2011, 01:28:00
regulární výrazy by mohla být pravá volba, nebo si to vyzobej pomocí operací s řetězci
|
||
WMPopi Profil |
#3 · Zasláno: 29. 1. 2011, 01:33:42
deathhead:
„nebo si to vyzobej pomocí operací s řetězci“ takhle mě to taky napadlo, chtěl jsem použít explode() po mezerách, ty slovní "proměnné" doplnit o zaznam.. ale pak nevím jak bych to složil, protože: $pocet = $x[0] $x[1] $x[2]; Vařím z vody, fakt nemám tušení. |
||
Spectator Profil |
#4 · Zasláno: 29. 1. 2011, 10:19:37
Můžeš to dělat na straně klienta v javascriptu - fce eval() a nebo v PHP fce =) eval()
v php do ní totiž můžeš napcat kód php ve formě stringu. Takže když uděláš echo eval("echo 1+2*3+sin(10);"); |
||
Alphard Profil |
#5 · Zasláno: 29. 1. 2011, 11:39:26
WMPopi:
Pole $zaznam je zřejmě v ideální tvaru pro různé replace funkce, takže můžete do daného výrazu dosadit hodnoty a pak použít eval(). Pokud ještě předtím zkontrolujete výsledný výraz (jestli nepoužíváte funkce jako sin(), bude to jednoduché regulár), mohlo by to být i bezpečné. Což nic nemění na tom, že eval() osobně nemám rád :-)
Druhá možnost je rozbrat ten výraz na elementární části, uložit do stromu a potom spočítat. Typická úloha výrobte kalkulačku, určitě by šlo najít něco hotového. |
||
WMPopi Profil |
#6 · Zasláno: 30. 1. 2011, 00:01:41
eval, to je přesně ono co jsem hledal.
Funkci jsem dosud neznal, děkuji vám. |
||
Časová prodleva: 13 let
|
0