динамически заполнить переменную JSON - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь динамически заполнить мои чарджи данными из базы данных.Данные зависят от объема (Буква и использование в процентах).

Из-за гибкости структуры базы данных я решил поместить всю информацию о томах в одну ячейку, в которой каждый том разделен пробелами, а буква и процент - запятой.

Теперьмне нужно поместить эти данные динамически в переменную json, чтобы я мог перенести их на свой график.На данный момент это выглядит так:

var jsonData = {
    "L": [{"y": 100}, {"y": 50}, {"y": 40}],
    "C": [{"y": 61}, {"y": 39}, {"y": 59}],
    "": [{"y": 33}, {"y": 97}, {"y": 67}]
}

Но эти значения и объемные буквы жестко закодированы.Поэтому мне нужно разделить мою строку php, которая включает тома, и каким-то образом передать ее для каждой записи в переменную json.

Мне нужно выбрать каждую букву один раз и каждое значение, которое принадлежит соответствующей букве.

Также я должен отметить, что jsonпеременная должна быть динамически расширяемой, поскольку возможно, что на ячейку приходится более 3 томов.

1 Ответ

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

Можете ли вы попробовать это:

<?php

$data = array('L,100 C,61 ,31', 'L,50 C,39 ,97', ' L,40 C,59 ,67');
$result = array();
foreach($data as $key => $element){
    $parts = explode(" ",$element);
    foreach($parts as $part){
        $underParts = explode(',', $part);
        if(isset($underParts[0]) && isset($underParts[1]) ){
        $result[$underParts[0]][]=array('y'=>$underParts[1]);
        }


    }
}


var_dump(json_encode($result));

Результат:

string(118) "{"L":[{"y":"100"},{"y":"50"},{"y":"40"}],"C":[{"y":"61"},{"y":"39"},{"y":"59"}],"":[{"y":"31"},{"y":"97"},{"y":"67"}]}"
...