преобразовать элемент массива из строки в число

#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]]}