2016-08-05 52 views
0

索引数组,我需要建立从笨查询以下数组。到目前为止,我所生产的并不是我想要的。创建从查询中笨

我需要什么...

array (size=4) 
    1 => string '1414277999' (length=10) 
    2 => string '1470411334' (length=10) 
    3 => string '1456617599' (length=10) 
    4 => string '1461538799' (length=10) 

我现在有..

array (size=4) 
    0 => 
    object(stdClass)[35] 
     public 'session' => string '1' (length=1) 
     public 'end' => string '1477090799' (length=10) 
    1 => 
    object(stdClass)[36] 
     public 'session' => string '2' (length=1) 
     public 'end' => string '1481932799' (length=10) 
    2 => 
    object(stdClass)[37] 
     public 'session' => string '3' (length=1) 
     public 'end' => string '1488585599' (length=10) 
    3 => 
    object(stdClass)[38] 
     public 'session' => string '4' (length=1) 
     public 'end' => string '1493420399' (length=10) 

这是我笨查询..

$bd = $this->db->select('session, end') 
    ->from('session_dates') 
    ->where('end >=', $now) 
    ->get(); 
return $bd->result(); 

有人能指出我如何建立我的查询来创建我正在寻找的数组的方向?

+0

如果你搜索了对谷歌,你会发现这个问题了'result_array' @第一个结果:'笨得到query' – Bobot

+0

我做阵列谷歌和result_array不会返回我指出的结果。 – user3189734

+0

找你右,mybad,则:返回array_map(函数($ VAL){$返回VAL [ '结束'];},BD-$> array_result()); – Bobot

回答

0

虽然这可能不是达到你的目标的最佳方式,我做了一个对象数组转换功能,我可以与大家分享:

功能(扔进一个辅助文件或东西这一点)

function object_to_array_recursive(&$o) 
{ 
    if(is_object($o)) 
    { 
     $o = (array)$o; 
    } 

    if(is_array($o) && count($o) > 0) 
    { 
     foreach($o as $k=>&$v) 
     { 
      object_to_array_recursive($v); 
     } 
     unset($v); 
    } 
} 

使用功能

$my_db_result = $bd->result(); 
object_to_array_recursive($my_db_result); 

return $my_db_result; 

由于其接受的参考参数,你将不得不通过这一个变量名,因为object_to_array_recursive($bd->result());将失败。

0

试试这个代码:

$bd = $this->db->select('session, end') 
    ->from('session_dates') 
    ->where('end >=', $now) 
    ->get(); 
$result_array = array(); 
foreach ($bd->result() as $row){ 
    $result_array[$row->session] = $row->end; 
} 
return $result_array; 
0

你必须提取所有你需要进入一个新的阵列中的数据,然后返回。

为此,您可以像下面这样:

$getEnds = function($value){ return $value->end; }; 

return array_map($getEnds, $bd->result()); 

array_map循环中给出的结果,并申请在它的每个值在第一个参数的函数。此功能只是从当前对象返回end PARAM。

你也可以压缩你的代码:

return array_map(function($value){ return $value->end; }, $bd->result());