在codeigniter中从查询创建索引数组

时间:2016-08-05 15:41:20

标签: php arrays codeigniter

我需要在codeigniter中的查询中创建以下数组。到目前为止,我所生产的并不是我所寻求的。

我需要什么...

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)

这是我在codeigniter中的查询..

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

有人能指出我如何构建我的查询以创建我正在寻找的数组吗?

3 个答案:

答案 0 :(得分:1)

您必须将所需的所有数据提取到新数组中,然后将其返回。

您可以执行以下操作:

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

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

array_map循环给定结果,并在第一个参数中对其应用每个值的函数。此函数只返回当前对象的end参数。

您还可以压缩代码:

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

答案 1 :(得分: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());将失败。

答案 2 :(得分: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;