Autor | Zpráva | ||
---|---|---|---|
Paul Profil * |
#1 · Zasláno: 25. 11. 2011, 09:45:16
Ahoj,
potřeboval bych pomoci s problémem typu vkládání řetězce do php kódu. Dejme tomu že mám v sql uložen ve sloupci vzoreček (100/203)*($data[$i]-459) tento bude z databáze načten do cyklu, jenže tento vzorec je jako řetězec a nevím jak ho mám převést na php kod, nic se nedaří, už ani nevím co mám googlit. Předem děkuji za rady vyřez kodem: $data= array(1,2,3,4,5); $read=mysql_query("SELECT * FROM vzorce WHERE nazev LIKE 'TEP'"); $hodnoty=mysql_fetch_array ($read); for($i=0;$i<=5;$i++) echo $hodnoty['vzorec']; |
||
Kajman_ Profil * |
#2 · Zasláno: 25. 11. 2011, 10:07:38
eval |
||
Tori Profil |
#3 · Zasláno: 25. 11. 2011, 10:32:38 · Upravil/a: Tori
Paul:
Když už to použijete, tak volejte eval uvnitř funkce, ať nedělá paseku mezi globálními proměnnými. Šlo by použít třeba něco takového (vzoreček dostane jako 1.param., jako další parametry předáte hodnoty, které ve vzorečku voláte jako $arg1 až $argn): /* vzorecek( $vzorec, $arg1 [, $arg2, $arg3, ...] ) */ function vzorecek() { if (func_num_args() < 2) { trigger_error("Funkci nebyla předána hodnota k dosazení do vzorečku, možná ani vzoreček.", E_USER_NOTICE); return null; } $args = func_get_args(); /* hodnoty do vypoctu */ foreach($args as $i=>$val) { ${"arg$i"} = $val; } /* vzorecek */ $vzorec = trim($arg0, ' ;') . ';'; if (strpos($vzorec, 'return') !== 0) { $vzorec = 'return '.$vzorec; } unset($args, $arg0); /* vypocet */ $vysledek = eval($vzorec); if ($vysledek === false) { trigger_error("Chybny vzorec, vygeneroval chybu [$php_errormsg]", E_USER_WARNING); return null; } else { return $vysledek; } } echo '<br> vysledek = '.vzorecek('$arg1 + $arg2', 12, 34); |
||
Paul Profil * |
#4 · Zasláno: 25. 11. 2011, 10:51:06
No klobouk dolů, díky moc, to je paráda, tak jsem to potřeboval, mockrát díky a hlavně za rychlost.
|
||
Bertram Profil |
#5 · Zasláno: 25. 11. 2011, 13:45:20
Paul:
Ahoj, pokud ti jde jen o dosazení vzorečku do cyklu, který prochází argumenty, které chceš do vzorce vkládat (vždy jeden - jednorozměrné pole argumentů), mělo by být dostačující něco takového: $vzorec = '$arg[$i]*2'; $args = array(99,25,18,25,258,96,5); echo "textová podoba vzorce: ".$vzorec."<br />"; foreach($args as $i=>$arg){ echo "<br />předaný argument: ".$arg; echo "<br />výsledek: "; $dosazeni = str_replace('$arg[$i]', $arg, $vzorec); eval("echo $dosazeni;"); echo "<br />"; } |
||
Časová prodleva: 12 let
|
0