我有以下模型功能:
function getdata_naoh($datetest2) {
$result = $this->db1->query("select round(avg(cast(t_dtl.hasil_m as decimal(6,4))),4) as hasil_m from t_hdr JOIN t_dtl ON t_hdr.headerid = t_dtl.headerid where id_solvent ='NaOH' AND status='ok' AND concentrate='0.0100' AND date_start <='$datetest2' AND date_finish >='$datetest2'");
if($result->num_rows()>0) {
return $result->result_array();
}else {
return array();
}
}
控制器功能:
function get_NaOH() {
$date_analysis = trim($this->input->post('date_analysis'));
$datetest = trim($this->input->post('date_analysis'));
$datetest2 = substr($datetest,6,4).'-'.substr($datetest,3,2).'-'.substr($datetest,0,2);
$dtnaoh = $this->M_tambahan->getdata_naoh($datetest2);
$data1 = 0;
foreach($dtnaoh as $row) {
$data1 = $row['hasil_m'];
}
$data = $data1;
echo $data;
}
查询结果如下:
| hasil_m |
| ----------- |
| 0.0100 |
我想获得hasil_m
列,根据控制器功能,我设置变量data1 = 0
然后在 foreach 语句中更改hasil_m
的结果值,但是当我回显变量$data
时,我仍然得到data1
值= 0 ,我错过了什么吗?
非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
在循环中,您将使用新值覆盖变量。如果您想将所有hasil_m
数据汇总到$data1
,那么只需修改您的foreach
循环,如下所示:
foreach($dtnaoh as $row) {
$data1 += $row['hasil_m'];
}
出于调试目的,您是否可以更新问题以准确显示查询返回的内容?
好像你已经float
了!您需要在循环中利用floatval()
来传递值:
foreach($dtnaoh as $row) {
$data1 += floatval($row['hasil_m']);
}
这是因为您的初始变量($data1
)被视为字符串。意味着它不会也不会显示浮点值,将其视为整数。