if ($condition) {
echo 1;
}
怎样把$condition 转换成if可识别的条件?直接这样判断会当成字符串常量,值为true
回复讨论(解决方案) if (eval(return $condition;)) {
$condition = 2=1 && (snb === snb || snb === hfu); if (eval(return $condition;)) { echo 1; }else { echo 2; }
eval() 可以解决纯数字的情况,字符串里有英文字母就会报错了,如果是上面的情况怎么办?
2=1 && (snb === snb || snb === hfu)
本身就不是合法的 php 条件表达式,不要说 eval,就是你直接写在 if 中都是要报错的
$condition = 2=1 && (snb === snb || snb === hfu); if (eval(return $condition;)) { echo 1; }else { echo 2; } if (2=1 && ('snb' === 'snb' || 'snb' === 'hfu')) { echo 3; }
呃 第一段的$condition和第二段if里面的内容是等价的吧 只是一个是字符串,一个是正常的if条件。
第二段运行没有问题的啊
第一段调用eval()会报一个常量未定义的错误,这里应该要转义?
$condition = 2=1 && (snb === snb || snb === hfu); if (eval(return $condition;)) { echo 1; }else { echo 2; } if (2=1 && ('snb' === 'snb' || 'snb' === 'hfu')) { echo 3; }
呃 第一段的$condition和第二段if里面的内容是等价的吧 只是一个是字符串,一个是正常的if条件。
第二段运行没有问题的啊
第一段调用eval()会报一个常量未定义的错误,这里应该要转义?
你的本意是('snb' === 'snb' || 'snb' === 'hfu') 但是 你却写成(snb === snb || snb === hfu) 连$符号都没有的变量,自然被理解成常量了,然而你并没有定义常量。
用变量转化一下,否则snb和hfu会被解释成常量。 $snb=snb;$hfu=hfu; $condition = '2=1 && ($snb === $snb || $snb === $hfu)'; if (eval(return $condition;)) { echo 1; }else { echo 2; }
呃 已经解决了 谢谢大神们
呃 已经解决了 谢谢大神们
那把贴子结了吧。
