Объединение значений ассоциативного массива, где ключи совпадают в одном массиве

Я просто работал над этим ... так что, возможно, потребуется немного tweeking. Обратите внимание на специальные символы, которые нуждаются в адресации.

public string GridtoCVS(GridView gvParm)
{
    StringBuilder sbRetVal = new StringBuilder();
    for (int i = 0; i <= gvParm.Rows.Count - 1; i++)
    {
        StringBuilder sbLine = new StringBuilder();

        for (int j = 0; j <= gvParm.Columns.Count - 1; j++)
        {
            sbLine.Append(gvParm.Rows[i].Cells[j].Text.Trim() + ",");
        }
        string sLine = sbLine.ToString().Replace("&nbsp;", "").Replace("&#39;","'").Replace("&amp;","&");

        sbRetVal.AppendLine(sLine);
    }
    return sbRetVal.ToString();
}
-1
задан trincot 19 January 2019 в 12:16
поделиться

1 ответ

JSON-объекта не существует. JSON представляет собой строковое представление в J avas S cript O bject N Otation, вы можете построить объект PHP -array-структура из, используя json_decode. Чтобы получить строку JSON из переменных PHP, используется функция json_encode.

Самый простой способ - это перебрать trailervideos для создания нового ассоциативного массива, поскольку могут быть только уникальные ключи. Мы можем исключить имена ключей с помощью функции array_values позже, чтобы предотвратить json_encode создание объекта вместо массива, поскольку в JavaScript не существует ассоциативных массивов.

Эта версия обрабатывает все категории, "Video Games", а также "Entertainment" и, если доступно, даже больше.

$a = [];

foreach (($o = json_decode($json))->trailervideos as $v)
{
  isset($a[$v->category]) || $a[$v->category] = new stdClass();
  $a[$v->category]->category = $v->category;
  $a[$v->category]->videos[] = $v->videos;
}

$o->trailervideos = array_values($a);

var_dump(json_encode($o));

(отформатированный) результат JSON выглядит так:

{
  "trailervideos": [
    {
      "category": "Video Games",
      "videos": [
        {
          "description": "Trailer of the game Dark Souls II",
          "title": "Dark Souls 2 Announcement Trailer"
        },
        {
          "description": "Trailer of the DLC Scholar of the First Sin for the game Dark Souls II",
          "title": "Dark Souls II Scholar of the First Sin - Forlorn Hope Trailer"
        },
        {
          "description": "Trailer of the DLC Ashes of Ariendel for the game Dark Souls III",
          "title": "Dark Souls III Ashes of Ariandel - Announcement Trailer PS4"
        }
      ]
    },
    {
      "category": "Entertainment",
      "videos": [
        {
          "description": "",
          "title": "intro"
        }
      ]
    }
  ]
}
0
ответ дан Quasimodo's clone 19 January 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: