unserialize () valor de la base de datos y ponerlo en json_encode después de foreach

Inserto en valores de base de datos (matriz) $row->units con la función de uso serialize() => [$row->units] , ¿cómo se pueden hacer eco con unserialize() en json_encode con $row->name ? (devolver enviar para ajax llamada en jQuery)

Columnas en la base de datos:

$ row-> units => a:6:{i:0;s:15:"Coffee";i:1;s:14:"Satellite";i:2;s:11:"Game Notes";i:3;s:14:"Internet";i:4;s:10:"Pool";i:5;s:0:"";}

$ row-> name => George Kurdahi

 $query = $this->db->query("SELECT * FROM arraha WHERE name LIKE '%$search%' ORDER BY name asc"); $data = array(); foreach ($query->result() as $row) { $data[] = array('name' => $row->name, 'units' => unserialize($row->units)); // Line 22 } return json_encode($data) 

El error para el código anterior es:

Se ha encontrado un error PHP

Gravedad: aviso

Mensaje: unserialize () [function.unserialize]: Error en el desplazamiento 277 de 281 bytes

Nombre de archivo: model.php

Número de línea: 22

Usted tiene algunos problemas con la encoding de caracteres:

 s:15:"Coffee" 

15 significa longitud en bytes. Por lo tanto, debe traducir la encoding de los datos obtenidos de DB a la encoding que se utilizó con serialize ()

Puede usar json_encode en lugar de serializar:

 $arr = array('Coffee', 'Satellite', /*...*/); $row->units = json_encode($arr);