我需要在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();
有人能指出我如何构建我的查询以创建我正在寻找的数组吗?
答案 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;