我一直在用多维数组替换绕圈子。
我需要替换存储在数据库中与状态类型相关的数字。如果我在视图中这样做,它会起作用,但它似乎不会在模型中替换?
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 有效,因为我一直在使用它......我觉得我错过了一些东西(也许很明显),但我就是不能把手指放在上面。在输出数组之前,我什至尝试在对象级别进行替换,但也无法使其工作。
您应该将其保存在$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;
我相信
在你的循环变量之前放置一个&
应该可以解决你的问题,因为这样引用就会更新。
所以你的循环会开始这样的事情
foreach($result as &$row) {
foreach ($row as $key => &$val) {