如何将变量用作运算符?

时间:2017-09-08 16:10:11

标签: php html

我希望代码1与代码2的工作方式相同,但事实并非如此。

<?php
//code 1
$z = '>';
$v = 50;
$a1[0] = 60;

if($v .$z. $a1[0])
{
    echo "<td>" . "test" . "</td>";
} else {}

//code 2
if($v > $a1[0]){
    echo "<td>" . "test" . "</td>";
} else {}

在上面的代码中我想替换&gt;带有变量的符号,这样我就可以使它变得动态。

我该怎么做?

1 个答案:

答案 0 :(得分:6)

基本上,你不能在PHP中使用变量作为运算符。

$v .$z. $a1[0]表达式所做的就是将变量连接成一个字符串。

我认为能够使用“动态运算符”的最接近的是定义一个可以使用变量选择的操作数组。

$ops = [
    '>' => function($a, $b) { return $a > $b; },
    '<' => function($a, $b) { return $a < $b; },
    '=' => function($a, $b) { return $a == $b; }
];

$z = '>';

$v = 50;

$a1[0] = 60;

if ($ops[$z]($v, $a1[0])) {
    echo "<td>" . "test" . "</td>";
}

(请注意,对于您的示例值,$v 大于$a1[0],因此此示例不会回显任何内容。)

关于eval,由于在您的问题评论中曾多次提及,大多数人建议不要使用它,原因很充分。几乎总有一种更好的方法可以解决您的问题。