(PHP) строковая переменная как выражение if (тоже строка $ other_variable names)

Итак, у меня есть этот кусок кода:

$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. Это возможно? Или есть лучший способ добиться этого?

0

Решение

Починил это. Проблема была с === в качестве сравнения. Когда я использовал == вместо этого это сработало!

Вот код сейчас.

$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!";
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]