Хотя eval
делает трюк, это обычно считается вредным.
Если совокупность возможных экземпляров операторов в $logic
ограничена, лучше работать с оператором switch или каскадно, если:
$result = 2;
$logic = trim(' <0');
$op2 = substr($logic, 0, 2);
$op1 = substr($logic, 0, 1);
if ( $op2 == '>=') {
$operand = substr($logic, 2);
if ($result >= (int)$operand) { echo "true"; }
} elseif ( $op1 == '>' ) {
$operand = substr($logic, 1);
if ($result > (int)$operand) { echo "true"; }
} elseif ( $op1 == '=' ) {
$operand = substr($logic, 1);
if ($result == (int)$operand) { echo "true"; }
} elseif ( $op2 == '<=') {
$operand = substr($logic, 2);
if ($result <= (int)$operand) { echo "true"; }
} elseif ( $op1 == '<' ) {
$operand = substr($logic, 1);
if ($result < (int)$operand) { echo "true"; }
} else {
echo "operator unknown: '$logic'";
}