Подтвердить что ты не робот

Запретить MySQL PDO возвращать числа в виде строк

Я использую PHP PDO для запроса базы данных MySQL. Он возвращает числа и целые числа в виде строк, и возится с моим JSON.

Есть ли лучший способ его исправления, кроме того, что он задает значения строк за строкой?

array(2) { 
  ["name"]=> string(11) "Preliminary" 
  ["sell_price"]=> string(6) "864.00"
} 
4b9b3361

Ответ 1

Если вы используете php 5.3.3 или выше, вы можете использовать JSON_NUMERIC_CHECK в качестве второго аргумента для json_encode для этого.

Смотрите: http://us3.php.net/manual/en/function.json-encode.php

Ответ 2

Хотя @Explosion Pills работает в этом случае для нужд @user1032531, он не обращается к первому источнику проблемы.

Как вы можете видеть в исходном вопросе, на стороне PHP значение из sell_price уже есть string, хотя, как сказал пользователь, в базе данных он хранится как "число" (мы не знаем, t знать, если это a DECIMAL или FLOAT).

Ну, при использовании PDO с MySQL может потребоваться надлежащая конфигурация, чтобы получить "числа" как "числа", как указал пользователь @jameshfisher в своем комментарии. Вы можете следить за его ссылкой, чтобы получить почти все, что вам нужно, чтобы заставить его работать.

Appart из этого, принятый ответ работает, потому что без использования JSON_NUMERIC_CHECK json_encode будет отправлять все как текст независимо от типа переменной, а при его использовании он преобразует значение в тип на основе на предположениях, а не на тип исходного var.