我必须使用这些字符串来完成这个条件。 由于$ op是字符串,因此无法正确运行条件。请帮忙。
<?php
//$op = $condition[$i]. " " .$operant[$i]. " " .$participant_index;
$op = "1 == 5";
if($type[$i]=="person" && $op){
echo "ok";
}
?>
答案 0 :(得分:1)
你需要评估该字符串作为代码,PHP不会暗中为你做这件事。
eval()
可以做到这一点,但由于eval
将使用完整的PHP权限自由执行您提供的所有代码,这是一个巨大的安全风险,具体取决于这些字符串的位置来自。
更好的解决方案是使用有限的表达式引擎来解析和评估字符串,只能处理一些选择表达式。你可以自己写这样的东西,但这种困难很大程度上取决于你可能允许的表达方式。 Symfony框架提供了一个不错的ExpressionLanguage
component,它已经可以做到这一点。
答案 1 :(得分:1)
如果您可以保证$op
的值不是邪恶的,那么请使用eval
:
if ($type[$i]=="person" && eval("return ".$op){
echo "ok";
}
请注意这一点,因为它会将$op
的内容解析为PHP代码。
答案 2 :(得分:0)
简单(但可能有害)的方式:
$op = "1 == 5";
if (eval("return " . $op . ";")) {
// do your thing.
}
答案 3 :(得分:0)
试试这段代码:
<?php
//$op = $condition[$i]. " " .$operant[$i]. " " .$participant_index;
$op = "1 == 5";
if($type[$i]=="person" && eval("return $op;"))
{
echo "ok";
}
?>