Проблема не в том, что вы используете result_array (), а в том, что вы позже возвращаете $ data напрямую. $ query = $ this-> db-> query (), затем используйте $ query-> result_array () в foreach. Затем вы можете вернуть $ data после создания его в foreach.
Другой ответ - многословный способ написать следующее:
function getAllDiaries($year,$month)
{
$sql = "SELECT day AND entry FROM diary WHERE month=$month AND year=$year";
return $this->db->query($sql)->result();
}
Но, конечно, это вернет массив объектов, а не многомерный массив.