#php #arrays #string #numbers #json
#php #массивы #строка #числа #json
Вопрос:
У меня есть несколько чисел, которые получены из запроса и которые я должен представить с помощью функции json_encode. Все работает, но результат выглядит следующим образом
{ "label": "man", "data":[["0","1.13"], ["1","1.38"], ["2","1.87"], ["3","1.12"], ["4","1.28"]]}
итак, я думаю, что проблема в том, что все числа хранятся в виде строки.
Есть ли функция для преобразования всех элементов в число?
Комментарии:
1.
"so I think that the problem is that all the numbers are stored as string."
В чем проблема?
Ответ №1:
Возможно, вы захотите добавить JSON_NUMERIC_CHECK в свою функцию json_encode:
json_encode($array, JSON_NUMERIC_CHECK);
Комментарии:
1. К вашему сведению, это было добавлено в PHP 5.3.3.
2. @Rocket Я знаю, просто хочу сообщить ему о доступных вариантах.
3. Рад, что смог помочь. Вы можете пометить ответ как правильный, если хотите
Ответ №2:
Вы можете получить целое или плавающее значение переменной с помощью этого:
echo (integer)$variable;
echo (float)$variable;
Комментарии:
1. Хорошо, если я буду использовать echo вместо использования json_encode … спасибо всем за ответы!
Ответ №3:
<?php
$json = '{ "label": "man", "data":[["0","1.13"], ["1","1.38"], ["2","1.87"], ["3","1.12"], ["4","1.28"]]}';
$structure = json_decode($json, true);
$newData = $structure['data'];
for ($x=0;$x<count($newData);$x ):
for ($i=0;$i<count($newData[$i]);$i ):
$newData[$x][$i] = (float)$newData[$x][$i];
endfor;
endfor;
$structure['data'] = $newData;
print json_encode($structure);
Новый результат:
{"label":"man","data":[[0,1.13],[1,1.38],[2,1.87],[3,1.12],[4,1.28]]}