我有一个用户定义的公式存储在mysql表AVG({Arrival_Date}-{Departure_Date})我设法获得项目Arrival_Date和Departure_Date然后从一个单独的表中选择行。
如何替换{Arrival_Date}和{Departure_Date}从AVG({Arrival_Date}-{Departure_Date})从数据库表中选择的实际数据?
大家好,谢谢大家的建议。我用https://github.com/jlawrence11/eos解决了上面的问题。因此,只要公式符合博德马斯法则,就没有必要去破译它。
您只读取定义的公式,将值(数字或浮点数)传递给公式,然后调用eos进行计算。
的例子:
<?php
$formula_as_defined = AVG({Arrival_Date}-{Departure_Date}) ; //get the formula from database
$str= str_ireplace('{','',$formula_as_defined);
$mod_str= str_ireplace('}','',$str);
$mod_str;
//
foreach($sql_select_resultset as $array) //This an array of values selected from db table #1 => Arrival_Date #2 =>Departure_Date
{
foreach($array as $key => $value)
{
$col_mod[]= $key;
$val_mod[]= strtotime($value);
//
}
$char_mod = str_ireplace($col_mod,$val_mod,$mod_str);
unset($col_mod);
unset($val_mod);
//
// $equation = "(".strtotime('13-07-2015')."-".strtotime('20-07-2015').")";
$equation = $char_mod ;
$eq = new eqEOS();
$result = $eq->solveIF($equation); //pass the your formula to solveIF and your are done.
//
$myresults = $this->groupData($myresults,$array,$x_axis_column,$results_type_time);
array_push($myresults[date('m',strtotime($array[$x_axis_column]))],$result);
}
?>