0

我想用逻辑运算符(&&或||)将条件变成一个带有连接的变量,然后运行到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;
}
?>
4

2 回答 2

0

您可以使用的是Command pattern. 命令模式试图将功能包装在一个类中。这样做的好处是您可以在运行时通过在配置中指定您想要的功能来交换功能。是更深入的解释。

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在外部文件或类似文件中指定类型。

于 2013-11-04T11:38:49.350 回答
0

将代码放入变量中并不是一个好的设计。它可能有效,但它很丑陋且难以理解。

相反,您可以使用内部foreach来检查用户的参数是否与项目的参数匹配。

无论如何,最好将数据存储在某种数据库中,例如 SQL 数据库,所以问题将变为:如何根据用户的参数创建 SQL 查询。

于 2013-11-04T11:47:37.030 回答