Не знаю codeigniter и никогда не работал с ним, но это может сработать
// Query 1
$results = array();
$this->db->select('COUNT(listing_id) as num')
->from('listings')
->where('city', $city);
$results['num'] = $this->db->get()->row()->num;
Хитрость в том, что вы можете связать доступ к элементу объекта. Вы не можете сделать это с массивами ($foo->row_array()['num']
), так что проблема здесь. Если вы использовали старый добрый mysql, взгляните на mysql_result . Для этого не существует аналога mysqli.
В зависимости от возвращаемого значения где () вы можете попытаться сократить его до
$results = array('num' =>
$this->db->select('COUNT(listing_id) as num')
->from('listings')
->where('city', $city)
->get()
->row()
->num
);