Codeigniter提取Object std类并创建数组

The question might be silly. But I am stucked in here. :( I am getting all of my database value as an object in controller.

This is how I am fetching database value:

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

It is getting all of the data corresponding to that user. This is my sample database table from where I am fetching data:

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

This is static data, phpgraphlib provide in the tutorial.

$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);

I need to extract the fetched data in this manner:

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

How could achieve this? What will be the logic? Any help would be really appreciable.

Here is my approach.. but also not complete.. What I am doing wrong?

$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++;
  }
}

When I var_dump($dataArray); Its giving me this output:

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" } }

But When I var_dump($data); Its giving this:

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) }

Its clearly visible I have messed up . Where is the wrong ?

Here is the output I print_r($points); Its giving this:

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] ..........

Please see below code.

It is self-explanatory.

Replace your values accordingly.

<?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);
?>

Answer edited as per OP's request:

<?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++;
}
?>
 $new_array = array();
 foreach($points as $point){
      $new_array[] = array(
        'id' => $point->id,
        'user_id' => $point->user_id
      );
 }

Nice little helper function:

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;
    }
}

example usage:

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

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