Макс, ему наверное eval() нужен.
if (eval("if(" . $i . $test . "){ return true; } else { return false; }")) {
echo 'Ojeh, kogda MobiCMS';
} else {
echo 'Nikogda!';
}
Как-то так.
Можно конечно сразу код в eval написать, но мне чёт кажется так красивее будет и удобнее. Читаемость кода лучше.
# ДоХтор (31.10.2017 / 21:23)
Макс, ему наверное eval() нужен.
Да, такое через eval надо.
Ну и надо бы упомянуть о самой функции
eval() (+/-)
Цитата:
Предостережение
Использование eval() может быть очень опасно, поскольку позволяет исполнить произвольный код. Использование данной функции не рекомендуется. Если вы полностью убеждены, что нет иного способа воспроизведения необходимого функционала, обратите особое внимание на исключения обработки таким образом данных, вводимых пользователем, без специальной обработки и валидации.
# КоханийВолодимир (31.10.2017 / 17:06)
Всем ку. Очень интересный вопрос. Есть у меня таблица в которой есть условия по типу < 3 или == 1
А на стороне сереве надо обработать это условие, то есть записать условие в переменную и отработать е
Т.к. вариант с eval() не безопасен, то я бы сделал поиск оператора
(больше/меньше и т.п.) с помощью регулярки, и уже на основе найденного оператора выполнял бы действие
(сравнение/прибавление и т.п.) Пример (+/-)
<?php
$count = 2;
//$condt = ' < 3';
$condt = '== 1';
var_dump(execute($count, $condt)); // bool(false)
function operand($str) {
return (int)preg_replace('~\D+~', '', $str);
}
function operation($str) {
$operations = [
'+' => 1, '-' => 2, '*' => 3, '/' => 4, '>' => 5,
'<' => 6, '==' => 7, '!=' => 8, '>=' => 9, '<=' => 10
];
$op = preg_replace('~[\d\s]+~', '', $str);
return isset($operations[$op]) ? $operations[$op] : 0;
}
function execute($count, $condt) {
$operation = operation($condt);
$operand = operand($condt);
switch ($operation) {
case 1:
$result = $count + $operand;
break;
case 2:
$result = $count - $operand;
break;
case 3:
$result = $count * $operand;
break;
case 4:
$result = $count / $operand;
break;
case 5:
$result = $count > $operand;
break;
case 6:
$result = $count < $operand;
break;
case 7:
$result = $count == $operand;
break;
case 8:
$result = $count != $operand;
break;
case 9:
$result = $count >= $operand;
break;
case 10:
$result = $count <= $operand;
break;
default:
$result = null;
}
return $result;
}
Спасибо за решения. Конечно евал не сильно хотелось бы реализовать, но для начала попробую его впихнуть, потом после удачи попытаюсь адаптировать код доктора. Благо у меня проект где не подгоняют)
Благо у меня проект где не подгоняют)
У меня тоже - в шею никто не гонит, гг, по крайней мере, пока.
давно эта мысль у меня.
в общем есть таблица например table. так из нею нужно брать инфу из ячейки "nado" .
а именно вот так: мне нужно определить и записать у кого первое второе или третье место.
обычный селект order мне не подходит.
Serghei, в каком формате инфа из поля nado ?