String evaluation

13 отговора 361 прегледа
#1

String evaluation

znachi, da predpolojim, che imam dinamichen if statement
buildwam si go, poluchawam stringowata mu stoinost
(sys eval("\$realIfClause = \"$ifClause\";"); primerno) i posle $realIfClause iskam da go sloja w edin if($realIfClause) - da, ama ne stava (t.e. string-a e primerno weche "xxx"=="xxx")

kak da go izlyja

Отговор
в отговор на AcidMemory #2

Re: String evaluation

%) izlygah go po drug nachin,
ama wyprosyt si stoi

Отговор
в отговор на AcidMemory #3

Re: String evaluation

Незнам дали съм те разбрал правилно, но

= присвоява стоиност
== сравнява стойност
=== сравнява стойност и тип

откъдето следва,че if($foo1=$foo2) е честа причина за бъг.

bofh

Отговор
в отговор на bofh #4

Re: String evaluation

ne, ne si me razbral prawilno, no towa, koeto kazwash, e wqrno

gledaj sega, primerno iskash da naprawish
$pesho="Pesho"
if($pesho=="Pesho").....

znachi az trqbwa da build-na if-clause-ata dinamichno i w posledstwie na edin eval, sym se dokaral do "Pesho"=="Pesho" i iskam e towa neshto da se izchisli i da razbera nqkaksi, che e true

Отговор
в отговор на AcidMemory #5

Re: String evaluation

Ne znam kak stoi vuprosa s keshiraneto na funkciite pri PHP-to. Moje tova da e prichinata!

Отговор
в отговор на AcidMemory #6

String evaluation

Преди малко написах един погрешен постинг, ако някой го е чел преди да го изтрия - Извинете . Ето едно quick & dirty решение, което обаче не те съветвам да ползваш заради ползването на assert (виж какво пише в manual-a)
<?
$foo="petko";
$bar="petyr";

$strif = '$foo==$bar';

eval ("\$strif = \"$strif\";");

(@assert($strif)==true) ? $str=true : $str=false;

if($str==true)
{
echo "yes";
} else {
echo "no";
};

?>

това го написах само като упражнение, мисля че трябва да търсиш друго решение.

Успех
bofh

Отговор
в отговор на bofh #7

Re: String evaluation

mdam, ama kofti rabota s assert-a

az imam edno wremenno reshenie napisano (bez eval), ama e kofti rabota

Отговор
в отговор на AcidMemory #8

Viarno, che temata e otdavna, no...

Nadiavam se, che znaesh za upotrebata na $$vars.

ako iskash v tvoia eval
da se poluchi $xxx="xxx" prosto
triabva da polzvash $$var

example:
<?
$a="xxx";
$$a="yyy";
$$$a="zzz";
$$$$a="hello world";

echo $zzz;
?>

shte vurne hello world

dzver ([линк])

Отговор
в отговор на dzver #9

Re: Viarno, che temata e otdavna, no...

ami ne e towa problema, ste go obqsnq pak, shtom trqbwa

znachi predstawi si che obhojdash nqkakwi strukturirani danni i iskash dinamichno da prawish nqkakwi srawneniq mejdu tqh, kato tezi srawneniq zawisqt ot nqkakwi parametri
stiga se do moment, w koito poluchawam (chrez eval) wqrnoto srawnenie (primerno ("hello world" == "hello world")) i towa trqbwa da go prowerq dali e true ili false.
wyprosyt e kak, bofh beshe predlojil da se izpolzwa assert, koito naistina ste wyrne neobhodimoto, obache se syglasi, che towa e samo w debug mode

Отговор
в отговор на AcidMemory #10

Re: Viarno, che temata e otdavna, no...

ok, izviniavam se za nerazbiraneto.

drugo moje bi tupo predlojenie:
vmesto da pravish string, kojto da eval-vash (koeto izbqgvam da pravia),
zashto ne si napravish edna funkcia
function noteval($danni1,$danni2,$parametri...) {....return true; }
kojato da ti vurshi sushtata rabota?

Отговор
в отговор на dzver #11

Re: Viarno, che temata e otdavna, no...

:)) ami az po princip naprawih edni if-owe, koito se izpylnqwt po-byrzo ot edna takawa funkciq (po princip sym se oprawil s towa, no prosto me interesuwa, tyj kato moje da popadna w sluchaj, w koito da nqma drugo reshenie)
wyprosyt mi e chisto optimizacionen, shtoto po princip ako mojeshe da stane s eval, nqmashe da se nalaga tezi if-owe (w twoq sluchaj funkciqta) da se izwikwa wseki pyt w cikyla, za da prawi ocenka

Отговор
в отговор на AcidMemory #12

Re: Viarno, che temata e otdavna, no...

predlojih go, zashtoto ne znaeh kolko slojni sa proverkite i kakvi parametrite.
do kolkoto razbrah ti pravish tva, za da prehvurlish tejest ot SQL v PHP...?

kakva e razlikata v skorostta na izpulne 10000 puti na
if ($a==$b) { }
i
function a($a,$b) { return ($a==$b); }
if (a($a,$b)) { }

i dali eval("statement") bi bil po-burz ot varianta s function?

Отговор
в отговор на dzver #13

Re: Viarno, che temata e otdavna, no...

:)) lichi mi, che ne moga da obqsnqwam
ako iskash wij mi icq-to w profila i ste ti obqsnq

Отговор
в отговор на AcidMemory #14

Re: String evaluation

ami kato ideq spored teb kakyw shte e rezultata ot str1=str2 interpretirana?
Ne bi bilo zle da dadesh p = eval("if(bla bla)") za da probwash...

JAVA lets make things badly and slow!!
Отговор