我想用逻辑运算符(&&或||)将条件设置为一个带连接的变量,然后运行if($ var)...
<?php
$ar = array(
'index1' => array('bedrooms'=> '1','suburb' => 'one'),
'index2' => array('bedrooms'=>'2', 'suburb'=>'two')
);
$userValBed = '1';
$userSuburb = 'one';
$c = '';
$c .= '($value["'.'bedrooms'.'"] == "'.$userValBed.'") && ';
$c .= '($value["'.'suburb'.'"] == "'.$userSuburb.'")';
foreach($ar as $key => $value){
if($c): // here occurs problem, please fix this.
// if($value["bedrooms"] == "1" && $value["suburb"] == "one"): // comment this line, and uncommet above 'if'.
echo "<br>";
echo "this condtions matches to ";
echo $key . ' key '. '<br>';
endif;
}
?>
答案 0 :(得分:0)
您可以使用的是Command pattern
。命令模式试图将类中的功能包装起来。这样做的好处是,您可以通过在配置中指定所需内容来在运行时交换功能。 Here是一个更深入的解释。
class Command {
function doSomething($v1, $v2);
}
然后您创建该类的子类:
class CommandAdd extends Command
{
function doSomething($v1, $v2)
{
return $v1 === $v2;
}
}
您可以根据需要使用doSomething
制作任意数量的课程。然后,您所要做的就是定义您的功能:
$command = new CommandAdd();
if($command->doSomething()) {
// Code here
}
您可以在外部文件或类似内容中指定Command
的类型。
答案 1 :(得分:0)
将代码放入变量中并不是一个好的设计。它可能有用,但它很丑陋且难以理解。
相反,您可以使用内部 foreach 来检查用户的参数是否与项目的参数匹配。
无论如何,将数据存储在某种数据库(例如SQL数据库)中会更好,因此问题将变为:如何根据用户的参数创建SQL查询。