我有两个数组。 First包含变量名,第二个包含从MySQL表中提取的浮点值和条件,数据类型为varchar。现在我想在if语句中使用这些名称和值。可能吗?让我解释一下代码。
for ($i=0; $i<5; $i++) {
if ($_POST[$names[$i]] $val[$i]) {
echo "Do something";
}
}
$ names = array(name1,name2,name4)
$ val = array(&lt; 121.5,&lt; = 88.9,&gt; 77.3)
我想在这两者之间进行逻辑比较,比较运算符与您可以看到的数组中的值一起存储。如果if语句不可能。请建议我采取其他方法来做到这一点。谢谢!
答案 0 :(得分:0)
我建议你以其他方式做。我知道它看起来很疯狂,但它会解决你的问题:)
$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;
}
}
答案 1 :(得分:0)
这是一个想法:
首先,在比较数组$val
上使用此正则表达式:
preg_match('/([^\d]+)(\d+)/', $val[$i][0], $match);
现在,您将$match[1]
中的比较运算符与$match[2]
中的比较数字进行比较。然后使用几个ifs或开关检查它是哪个比较运算符,然后使用常规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
}
}