Use string value as if else statement
This is probably the dumbest question, and the answer is probably NO, but ...
Can a string value be used in an if statement? For example, let's say I pass
'if strcasecmp("hello", "Hello") == 0'
for a function and call it $ string, can I use this value as a conditional evaluation of the if statement?
if (the value of $string) {}
I know that eval () will execute the string as if it were PHP code, but it actually executes it and returns null / false, rather than just letting PHP surrounding the string process the contents of the string. I also know that you can use variable variables with $ {$ varname} which will tell php to use $ varname as the variable name.
So, I guess what I'm looking for is something like "variable code" instead of "variable variables".
source to share
I have to guess a little, maybe you want return
from eval
?
if (eval('return strcasecmp("hello", "Hello") == 0;')) {}
In addition, there are closures that can add a little more fluidity:
$if = function($string) {
return eval(sprintf('return (%s);', $string));
}
$string = 'strcasecmp("hello", "Hello") == 0';
if ($if($string)) {
...
}
source to share
The operator if
doesn't return anything, so your example won't work. However, you can save the expression as a string, and more on that later:
$expr = 'strcasecmp("hello", "Hello") == 0';
$val = eval($expr);
Now, keep in mind that usage is eval
highly discouraged as it can lead to serious security issues.
source to share