如何使用foreach循环将另一个属性添加到行数组中

时间:2012-09-09 23:06:15

标签: php codeigniter foreach

我在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。 我怎样才能反映要返回的数组中的更改。

2 个答案:

答案 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中的数据。