将foreach数据结果作为变量

时间:2016-05-26 02:03:31

标签: php codeigniter

我有以下模型功能:

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 ,我错过了什么吗?

非常感谢任何帮助,谢谢。

1 个答案:

答案 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)被视为字符串。意味着它不会也不会显示浮点值,将其视为整数。