Вопрос такой. Ипользую Adodb ActiveRecord, в итоге все поля получаются типа string , при сериализации тоже string , хотелось бы чтобы они примерно соответствовали типа в БД, числа - числа, строки - строки, так как результаты работы скрипта уходят программе на ActionScript и везде конвертацию писать не хочется. Как сделать? Кто-то что-то подскажет?
Незнаком с Adodb. Вариант "в лоб": делать перед передачей PHP: <? $table->field = (int)$table->field; Или написать класс-наследник от класса Adodb_ActiveRecord и переписать метод получения данных. Но, думается, ребята писавшие Adodb ActiveRecord не от лени к типу не приводили.
Грустно это. Смысл как раз в том, что я поля не предобрабатываю, а делаю автоматически Adodb ActiveRecord => associative array => JSON string
Ну, PHP не нужны преобразования к типу, он сам из контекста поймёт: PHP: <? echo '12' * 2; // = 22 А другие языки либо вызвали бы ошибку компилятора (языки со статическими типами, коим является ActionScript насколько я помню), либо повторили бы строку "12" дважды ("1212") - языки с жёской, но не статичной типизацией. Напиши функцию, которая будет проходить по массиву и если значение is_numeric() (не int, float или число в виде строки ('12' или '12.22')), то преобразовывать в int. Если массив небольшой, то функция пройдтся быстро. Например (для "плоского" массива): PHP: <? function toInt($item){ return is_numeric($item) ? (int)$item : $item); } $array = array('Test', '22'); $array2 = array_map('toInt', $array); // вернёт: array('Test', 22)