【问题标题】:make conditions with logical operators into variable将带有逻辑运算符的条件变为变量
【发布时间】:2013-11-04 11:33:36
【问题描述】:

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

【问题讨论】:

  • 解析错误:语法错误,D:\xampp\htdocs\search-code.php(128) 中的文件意外结束:第 1 行的 eval() 代码

标签: php if-statement logical-operators


【解决方案1】:

您可以使用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 的类型。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-07
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      相关资源
      最近更新 更多