2

Is it possible to assign a conditional statement into a variable and use it in an if statement? For example, I have the following code where the condition in the if statement will change from time to time:

<?php       
   $x = 2;
   
   //This "x > 5" value will come from a database
   $command = "x > 5";//Some times this value might be x > 5 || x == 1
  
   if($command)//This will always be true no matter what since the content of the $command is not empty
        echo "x is bigger than 5";
   else
        echo "x is smaller than 5";//I want this line to get executed since x is smaller than 5 in this case
?>

Expected output is x is smaller than 5, but what I get is x is bigger than 5

D P.
  • 1,039
  • 7
  • 27
  • 56
  • I wrote this answer to a similar question: https://stackoverflow.com/a/50280727/2734189. maybe you could use something like that. – Don't Panic Jul 01 '21 at 21:14

1 Answers1

1

You need to use eval(). $command will have to contain $ before the variables so it's valid PHP syntax.

$x = 2;
$command = '$x > 5';
$result = eval("return ($command);");
if ($result) {
    echo "x is bigger than 5";
} else {
    echo "x is smaller than 5";
}

Since eval() can execute arbitrary code, you should be extremely careful about what you allow to be put into $command.

Barmar
  • 741,623
  • 53
  • 500
  • 612