2016-08-05 5 views
0

Мне нужно создать следующий массив из запроса в 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(); 

Может кто-то мне точку в как построить мой запрос для создания массива, который я ищу?

+0

если бы вы искали на Google вы нашли 'result_array' @ первый результат с этим вопрос:' CodeIgniter получить массив из query' – Bobot

+0

я сделал google и result_array не возвращают результаты, которые я указал. – user3189734

+0

Вы правы, mybad, затем: return array_map (function ($ val) {return $ val ['end'];}, $ 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 из текущего объекта.

Вы также можете сжать код:

return array_map(function($value){ return $value->end; }, $bd->result()); 
Смежные вопросы