Итак, у меня есть этот кусок кода:
$age = 23;
$gender = 0;
$rules = "gender = 0 AND ( age >= 2 AND age <= 20 )";
$find = array(
' = ',
'age',
'gender'
);
$replace = array(
' === ',
'$age',
'$gender'
);
$rules = str_replace($find, $replace, $rules);
print($rules);
if (eval('return' . $rules . ';')) {
return "You get coupon " . $coupon->couponID . "!";
} else {
return "Coupon " . $coupon->couponID . " is not for you!";
}
Я пытаюсь использовать эту строковую переменную в качестве выражения if. Это возможно? Или есть лучший способ добиться этого?
Починил это. Проблема была с ===
в качестве сравнения. Когда я использовал ==
вместо этого это сработало!
Вот код сейчас.
$rules = "$age >= 2 AND $age <= 20 AND ( $gender = 1 OR $gender = 2 )";
$find = array(
' = ',
'age',
'gender'
);
$replace = array(
' == ',
'$age',
'$gender'
);
$rules = str_replace($find, $replace, $rules);
print($rules);
if (eval(sprintf('return (%s);', $rules))) {
return "You get coupon " . $coupon->couponID . "!";
} else {
return "Coupon " . $coupon->couponID . " is not for you!";
}
Других решений пока нет …