Согласно пользовательскому вводу я выполняю запрос, а затем некоторую математику по результатам. Моя проблема в том, что я храню математику в переменной и не могу ее прочитать как математику. Например:php - использование переменной в виде формулы
$Math=($ArryDBs[$i]['GSE45728_01']+$ArryDBs[$i]['GSE45728_02'])//this is constructed upon user input
echo "<table>";//this is coded after Select, where $ArryDBs is generated
for ($i=0; $i<$num_rows; $i++){
echo "<tr>";
echo "<td> 1) From Math: ".$Math."</td>";
echo "<td> 2) Direct: ".($ArryDBs[$i]['GSE45728_01']+$ArryDBs[$i]['GSE45728_02'])."</td>";
echo "</tr>";
}
echo "</table>";
Выход следующим образом (обратите внимание, что выражения для 1) и 2) те же):
1) From Math: ($ArryDBs[$i]['GSE45728_01']+$ArryDBs[$i]['GSE45728_02']) 2) Direct: 8.23018
1) From Math: ($ArryDBs[$i]['GSE45728_01']+$ArryDBs[$i]['GSE45728_02']) 2) Direct: 12.46399
1) From Math: ($ArryDBs[$i]['GSE45728_01']+$ArryDBs[$i]['GSE45728_02']) 2) Direct: 15.08906
значения в 2) Direct является то, что я хочу. Но он изменяется в соответствии с вводом пользователей. Вот почему я сохраняю выражение в переменной. Его чтение переменной буквально как строка. Все связанные вопросы предполагают использование eval(), хотя всегда люди (и само руководство) не поощряют его использование.
Мой вопрос: как я могу получить $ Math как операцию для выполнения?
Если подставлять переменные выше поплавками, я получаю ожидаемый результат: '1) From Math: 67 2) Direct: 67'. Пробовали ли вы перечислить переменные в правильные числовые значения? – Crackertastic
@Crackertastic: Я не уверен, действительно ли правильные числовые значения, и просмотрю мой код. Для простоты я написал $ Math напрямую, но на самом деле он построен с такими вещами, как '$ ForMath [$ key]. =" \ $ ArrayDBs [\ $ i] ['". $ Key." _ ". $ Matches [1] [$ n]. "']"; $ Math = array_values ($ ForMath); 'и в коде моего вопроса называется $ Math [0] или аналогичным. Во всяком случае, когда повторение «чтения» совпадает с выражением, которое я хочу оценить. Я тщательно рассмотрю свой код (я ни в коем случае не эксперт ...). Спасибо. – CMArg
Обычно PHP хорош в том, что он принимает строки, которые _ «думает» _ являются числами и делает кастинг для вас до арифметики, но PHP отнюдь не идеален. Вы всегда можете попробовать помещать вещи как '(float)' или '(int)' перед переменными, чтобы сказать PHP, чтобы сбрасывать переменную. Функция PHP [settype()] (http://php.net/manual/en/function.settype.php) также полезна, так как она вернет логическое значение, позволяя вам знать, успешно ли выполнено бросок. – Crackertastic