【问题标题】:if statement with condition in array in PHPPHP中带有条件的if语句
【发布时间】:2017-03-04 20:12:17
【问题描述】:

我有两个数组。第一个包含变量名,第二个包含从 MySQL 表中提取的浮点值和条件,数据类型为 varchar。现在我想在 if 语句中使用这些名称和值。可能吗?让我解释一下代码。

for ($i=0; $i<5; $i++) {
    if ($_POST[$names[$i]] $val[$i]) {
        echo "Do something";
    }                       
}

$names = 数组 (name1, name2, name4)
$val = 数组 (77.3)

我想在这两者之间执行逻辑比较,并且比较运算符与值一起存储在您可以看到的数组中。如果 if 语句不可能。请给我建议其他方法。谢谢!

【问题讨论】:

  • 是的,请解释代码。你到底想做什么?你想比较值吗?然后在它们之间放置一个比较运算符。
  • 目前还不清楚你真正想用这种奇怪的方法实现什么。
  • 我会在您的查询中使用这些值,这样您就只会得到您想要的记录。不过问题需要更清楚。
  • @FranzGleichmann 是的,我想在这两者之间应用 条件,但这些条件已经存在,正如您在我提到的 $val 数组中看到的那样。
  • @chris85 条件是你可以在我提到的 $val 数组中看到的值。我想获得附带条件的号码。

标签: php mysql


【解决方案1】:

这是一个想法:

首先,在你的比较数组$val上使用这个正则表达式:

preg_match('/([^\d]+)(\d+)/', $val[$i][0], $match);

现在,$match[1] 中有比较运算符,$match[2] 中有要比较的数字。然后用几个 if 或 switch 来检查是哪个比较运算符,然后用一个常规的 if 子句。

例如:

if ($match[1] === '<=') {
    if ((int)$match[2] <= $_POST[$names[$i]]) {
        //do something
    }
} elseif ($match[1] === '>') {
    if ((int)$match[2] > $_POST[$names[$i]]) {
        //do something else
    }
}

【讨论】:

  • 你能详细说明一下吗?
  • @tooba 当然,我添加了一个示例。
【解决方案2】:

我建议您以其他方式进行。我知道这看起来很疯狂,但它会解决你的问题:)

$names = array (name1, name2, name4 );
$val = array (array('bigger',121.5), array('smaller_even',88.9),array('smaller',77.3));

for ($i=0; $i<5; $i++){
    switch ($val[$i][0]){
        case: 'bigger':
        if($name[$i]>$val[$i][1]){
           echo 'do something';
        }
        break;
    }
}

【讨论】:

  • 这些是我从 MySQL 表中得到的规则,每个属性都有值和比较运算符存储在每个属性中。所以我不能用这个替换运算符。
  • 所以如果它首先存储在数据库中,您需要检查它是什么类型的比较。您可以尝试使用 strpos() 来执行此操作(请记住首先检查较长的版本 - “=”)。 if(strpos($val[$i],'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-19
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多