#php #ajax #json #zend-framework
#php #ajax #json #zend-framework
Вопрос:
В модели:
public function getMeasurements($user_id) {
$user_id = (int)$user_id;
$row = $this->fetchRow('user_id = ' . $user_id);
return $row->toArray();
}
Возвращаемся в контроллер:
$array = $user->getMeasurements($user_id);
$this->_helper->json($array);
Ответ JSON:
{
"user_id":"1",
"height":"186.00",
"waist":"81.00",
"chest":"79.00",
"hips":"81.00",
"inseam":"85.00",
"weight":"76.00"
}
Моя проблема в том, что каждое из этих полей хранится как целое число в таблице базы данных, но возвращается как строка в ответе JSON. Так в чем дело?
Устранение неполадок до сих пор включало следующее:
$this->_helper->json(array('integer'=>0, 'string'=>'0'));
Это работает так, как ожидалось. Теряется ли тип при преобразовании набора строк в массив в модели?
Ответ №1:
Это не ошибка json, или при разговоре в zf
Это mysqli (или другое расширение mysql)
Смотрите пример:
// sql СОЗДАТЬ ТАБЛИЦУ `foo` ( `id` int(11) АВТО_ИНКРЕМЕНТ БЕЗ знака NOT NULL, `type` перечисление('n','y') НЕ РАВНО НУЛЮ ПО УМОЛЧАНИЮ 'n', ПЕРВИЧНЫЙ КЛЮЧ (`id`) ) ДВИЖОК= MyISAM AUTO_INCREMENT=7 КОДИРОВКА ПО УМОЛЧАНИЮ = utf8
<?
$c = new mysqli('localhost', 'azat', 'Z2UXWq2EyL7Or7m');
$c->select_db('test');
$info = $c->query('select * from foo');
var_dump($info->fetch_object());
// вывод объект (стандартный класс)#5 (2) { ["id"]=> строка(1) "2" ["тип"]=> строка (1) "y" }
Комментарии:
1. Спасибо, Азат. Кажется, мне нужно выполнить некоторое приведение как int.