codeigniter替换模型

时间:2016-03-01 09:35:55

标签: php arrays codeigniter

我一直在用多维数组替换圈子。

我需要替换存储在数据库中的与状态类型相关的数字。如果我在视图中执行此操作它可以工作但它似乎不会在模型中替换?

    function fetch_shipments($orgID){
    $this->db->select('shipID, shipRef, shipCarrier, shipOrigin, shipDestination, shipQty, shipStatus');
    $this->db->where('orgID', $orgID);
    $query = $this->db->get('shipments');

    $result = $query->result_array();

    foreach($result as $row) {
        foreach ($row as $key => $val) {
            $key == 'shipStatus' && $val == 0 ? $val = 'Current' : $val;
            $key == 'shipStatus' && $val == 1 ? $val = 'Pending' : $val;
            $key == 'shipStatus' && $val == 2 ? $val = 'Complete' : $val;
        }
    }

    return $result;
}

真的让我挠挠脑袋,我知道这种foreach的作用,因为我一直都在使用它...我觉得我错过了一些东西(也许是显而易见的)但是我不能把手指放在它上面。我甚至尝试在输出数组之前在对象级别进行替换,但无法使其工作。

2 个答案:

答案 0 :(得分:3)

您应该将其保存在$result变量中。不在$val

foreach($result as $k => $row) {
    foreach ($row as $key => $val) {
        $key == 'shipStatus' && $val == 0 ? $result[$k][$key] = 'Current' : $val;
        $key == 'shipStatus' && $val == 1 ? $result[$k][$key] = 'Pending' : $val;
        $key == 'shipStatus' && $val == 2 ? $result[$k][$key] = 'Complete' : $val;
    }
}

return $result;

或者你可以删除内循环

foreach($result as $k => $row) {
    if($row['shipStatus']==0){
         $result[$k]['shipStatus'] = 'Current';
    }elseif($row['shipStatus']==1){
         $result[$k]['shipStatus'] = 'Pending';
    }else{
         $result[$k]['shipStatus'] = 'Complete';
    }
}

return $result;

答案 1 :(得分:0)

我相信在循环变量之前放置&可以解决您的问题,因为引用会更新。

所以你的循环会像这样开始

foreach($result as &$row) { foreach ($row as $key => &$val) {