Codeigniter提取Object std类并创建数组

时间:2014-12-11 03:56:07

标签: php codeigniter

这个问题可能很愚蠢。但我被困在这里。 :(我将所有数据库值作为控制器中的对象。

这就是我获取数据库值的方式:

$points = $this->CI->modelgraph->get($user_id);

获取与该用户对应的所有数据。这是我从中获取数据的示例数据库表:

id  user_id    b_value    h_value    date            r_value    
1    24        330        6.2        10.11.2014       90
2    25        334        6.2        10.11.2014       92

这是静态数据,phpgraphlib在教程中提供。

$data = array("1" => .0032, "2" => .0028, "3" => .0021, "4" => .0033, 
"5" => .0034, "6" => .0031, "7" => .0036, "8" => .0027, "9" => .0024, 
"10" => .0021, "11" => .0026, "12" => .0024, "13" => .0036, 
"14" => .0028, "15" => .0025);

我需要以这种方式提取获取的数据:

$data = array("h_value" => b_value,);

怎么能实现这个目标?什么是逻辑?任何帮助都会非常明显。

这是我的方法..但也不完整..我做错了什么?

$total=count($points);
$i=1;
$dataArray=array();
while($i <= $total) {
 foreach($points as $value) {
    //echo $value -> h_value;
    $field = $value -> h_value;
    $labels = $value -> b_value;
    $dataArray[$i][$field ] = $labels;    
    $i++;
  }
}

当我var_dump($ dataArray);它给了我这个输出:

array(11) { [1]=> array(1) { ["6.6"]=> string(3) "358" } [2]=> array(1) { ["7.4"]=> string(3) "201" } [3]=> array(1) { ["6.5"]=> string(3) "144" } [4]=> array(1) { ["6.5"]=> string(3) "112" } [5]=> array(1) { ["6.2"]=> string(3) "144" } [6]=> array(1) { ["6.2"]=> string(3) "185" } [7]=> array(1) { ["7.0"]=> string(3) "176" } [8]=> array(1) { ["7.5"]=> string(3) "234" } [9]=> array(1) { ["6.5"]=> string(3) "365" } [10]=> array(1) { ["6.2"]=> string(3) "110" } [11]=> array(1) { ["4.2"]=> string(3) "100" } }

但是当我var_dump($ data);它给出了这个:

array(15) { [1]=> float(0.0032) [2]=> float(0.0028) [3]=> float(0.0021) [4]=> float(0.0033) [5]=> float(0.0034) [6]=> float(0.0031) [7]=> float(0.0036) [8]=> float(0.0027) [9]=> float(0.0024) [10]=> float(0.0021) [11]=> float(0.0026) [12]=> float(0.0024) [13]=> float(0.0036) [14]=> float(0.0028) [15]=> float(0.0025) }

它清晰可见我搞砸了。哪里错了?

这是输出I print_r($ points);它给出了这个:

Array ( [0] => stdClass Object ( [id] => 12 [user_id] => 24 [b_value] => 358 [h_value] => 6.6 [rec_date] => 2014-09-19 [rec_time] => [h_value] => 1[date_added] => 2012-09-19 16:38:05 [date_modified] => 0000-00-00 00:00:00 ) [1] ..........

3 个答案:

答案 0 :(得分:0)

请参阅以下代码。

这是不言自明的。

相应地替换您的值。

<?php
function modelFunction($user_id) {
    $this->db->select('h_value, b_value');
    $this->db->from('YOUR_TABLE_NAME');
    $this->db->where('user_id', $user_id);
    $query = $this->db->get();
    $arr = array();
    if ($query->num_rows()) {
        $i=0;
        foreach ($query->result_array() as $row) {
            extract($row);
            $arr[$i][$h_value] = $b_value;
            ++$i;
        }
    }
}
?>

Controller:
<?php
$points = $this->CI->modelFunction->get($user_id);
?>

根据OP的要求编辑答案:

<?php
$dataArray = array();
for ($i=0 ; $i<= $total ; $i++) {
    $value = $points[$i];
    $field = $value->h_value;
    $labels = $value->b_value;
    $dataArray[$i][$field ] = $labels;    
    $i++;
}
?>

答案 1 :(得分:0)

 $new_array = array();
 foreach($points as $point){
      $new_array[] = array(
        'id' => $point->id,
        'user_id' => $point->user_id
      );
 }

答案 2 :(得分:0)

漂亮的小助手功能:

function object_to_array($data)
{
    if (is_object($data)) {
         $data = get_object_vars($data);
    }
    if (is_array($data)) {
          return array_map(__FUNCTION__, $data);
    }
     else {
          return $data;
    }
}

示例用法:

$data['points'] = $this->CI->modelgraph->get($user_id);

$data['points'] = object_to_array($data['points']);