Возвращение JSON-массива из ответа базы данных (lumen php) - PullRequest
0 голосов
/ 25 декабря 2018

Я пытаюсь отсортировать ответ, который я получаю из своей базы данных, чтобы вернуть хороший массив JSON, но я не могу найти, как это сделать, и поэтому я обращаюсь к вам за помощью.

Ответ из базы данных:

[{"stad":"\u00d6rebro","lokalnamn":"Allm\u00e4nrepan"}, 
{"stad":"Kumla","lokalnamn":"Rum 1"},{"stad":"Kumla","lokalnamn":"Rum 
2"}, 
{"stad":"Kumla","lokalnamn":"Rum 4"}, 
{"stad":"Karlstad","lokalnamn":"UNO"}, 
{"stad":"Karlstad","lokalnamn":"Replokal 231"}]

Я хотел бы, чтобы он возвратил что-то вроде:

[
"\u00d6rebro":{"Allm\u00e4nrepan"},
"kumla":{"Rum 1","Rum 2","rum 4"},
"Karlstad":{"uno","replokal 231"}
]

надеюсь, вы получите точку,

попытался вызвать response-> json () намассив, без успеха, и я не могу найти дополнительную информацию в Интернете, так как я не уверен, что искать

1 Ответ

0 голосов
/ 25 декабря 2018

Это можно сделать, выполнив следующие действия:

  1. создайте массив со значением ключа в соответствии с вашим значением json
  2. , измените элемент только на 1, чтобы он не был массивом (используя массив-карта )

Рассмотрим этот код в качестве примера:

$s = '[{"stad":"\u00d6rebro","lokalnamn":"Allm\u00e4nrepan"},{"stad":"Kumla","lokalnamn":"Rum 1"},{"stad":"Kumla","lokalnamn":"Rum 2"},{"stad":"Kumla","lokalnamn":"Rum 4"},{"stad":"Karlstad","lokalnamn":"UNO"},{"stad":"Karlstad","lokalnamn":"Replokal 231"}]';

$arr = json_decode($s, true);
$res = array();
foreach($arr as $elem) {
    $key = $elem["stad"];
    $value = $elem["lokalnamn"];
    if (array_key_exists($key, $res)) {
        $res[$key][] = $value;
    } else {
        $res[$key] = array($value);
    }
}

$a = array_map(function($elem) {
    if (is_array($elem) && count($elem) == 1)
        return $elem[0];
    else return $elem;
},$res);

Это даст вам:

Array
(
    [Örebro] => Allmänrepan
    [Kumla] => Array
        (
            [0] => Rum 1
            [1] => Rum 2
            [2] => Rum 4
        )

    [Karlstad] => Array
        (
            [0] => UNO
            [1] => Replokal 231
        )
)
...