математическое значение json_decode в цикле - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть цикл, который обрабатывает строку JSON через json_decode.

Я пытаюсь выполнить некоторые математические вычисления для значения, прежде чем передать его в свою таблицу.В данный момент я могу отобразить желаемый вывод внутри цикла, используя echo $mileage1.";";, но мне нужно изменить ключ lc на деление 1000.

Должен быть способ сделать это внутриforeach оператор, а не в блоке: что-то вроде foreach(json_decode($url2, true)['status'] ($status["lc"] / 1000) as $status), например, где ($status["lc"] / 1000) выполняет математику вне блока цикла.

Я не смог найти никаких примеров этой конкретной ситуации, поэтомудалеко.Любые предложения будут с благодарностью.

Вот фрагмент моего кода:

$ret_array = array();
$url2 = file_get_contents("http://URLApi?");
foreach(json_decode($url2, true)['status'] as $status){
//mileage maths??
$mileage = $status["lc"];
$mileage1 = ($mileage) / 1000;
//echo $mileage1.";";
$ret_array[] = $status;
}
return $ret_array;

1 Ответ

0 голосов
/ 05 февраля 2019

Существует три варианта замены значения в массиве вычисленным значением в foreach:

Во-первых, ссылка & значение, чтобы изменить его в исходном массиве:

$array = json_decode($url2, true);

foreach($array['status'] as &$status){
    $status["lc"] = $status["lc"] / 1000;
}

Во-вторых, измените исходный массив с помощью ключа:

$array = json_decode($url2, true);

foreach($array['status'] as $key => $status){
    $array['status'][$key]["lc"] = $status["lc"] / 1000;
}

В-третьих, создайте новый массив результатов:

foreach(json_decode($url2, true)['status'] as $status){
    $status["lc"] = $status["lc"] / 1000;
    $result[] = $status;
}

// Or if you need to preserve keys:

foreach(json_decode($url2, true)['status'] as $key => $status){
    $status["lc"] = $status["lc"] / 1000;
    $result[$key] = $status;
}

Вы также можете сопоставить каждый элемент функциичто делает расчет:

$result = array_map(function($v) { return $v['lc'] = $v['lc'] / 1000; },
                    json_decode($url2, true)['status']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...