我在foreach
的模型文件中的行数组上使用CodeIgniter
循环。
我想要做的是将我在foreach
循环中的每一行所做的更改反映到原始数组。
$unique = $this->db->get_where('list', array('item_index' => $item));
foreach ($unique->result_array() as $row)
{
$row["status"]= "Not Unique";
if($row["bid_amount"]==$amount)
{
if($count==0){ $row["status"]="Unique and Final"; }
else {$row["status"]="Unique but Not Final"; }
}
$count++;
}
return $unique;
我在这里为每一行添加另一个属性,我希望回显一个与视图文件中每一行对应的属性。
但我收到错误Undefined index: status
。
我怎样才能反映要返回的数组中的更改。
答案 0 :(得分:3)
将result_array()
分配给变量,迭代它,但更改原始数组而不是本地数组。 PHP的foreach
有两种形式:
foreach($arr as $value)
和foreach($arr as $key => $value)
试试这个:
$results = $unique->result_array();
foreach ($results as $rK => $rV){
$results[$rK]["status"]= "Not Unique";
//other stuff.
}
return $results;
或者,您可以通过引用传递:
foreach ($results as &$result) {
$result['status'] = "Not Unique";
}
参见PHP docs on arrays.具体示例10。
答案 1 :(得分:1)
在你的foreach中,$row
指的是循环的局部变量。因此,更改它不会影响$unique
中的数据。