Разверните объект (json) в php

#php

#php

Вопрос:

Мне нужен этот результат sql-запроса (из файла журнала, надеюсь, он точный).

 [  {"id":"1","text":"123"} ,{"id":"2","text":"456"} ] []  

чтобы стать этим

 {  1: {"id":"1","text":"123"} ,2: {"id":"2","text":"456"} }  

Я попробовал array_push и array_combine, но я новичок в PHP и пока безуспешно.
Короче говоря: я хочу добавить ключи (начиная с 1) к массиву объектов.

Одна попытка

 $i = 1; while ($row = fetchRow($result)) {   array_push($arr_result, $row);  array_push($i, $arr_result);  $i  ;  }  

Но $arr_result выглядит как первый пример кода.

Комментарии:

1. Покажи нам, что ты пробовал

2. пробовать echo json_decode($your_string,true);

3. Если использование встроенных функций не увенчалось успехом, как насчет того, чтобы попробовать старый добрый цикл ?

4. $arr_result[$i] = $row;

5. @cid Спасибо — это сработало, но ключи теперь являются текстом, а не целыми числами, верно?

Ответ №1:

Вам не нужно $i использовать $arr_result[] , это создаст новое появление в вашем массиве.

 while ($row = fetchRow($result)) {   // this forces the array to start at 1 instead of 0 if thats what you really want  if (count($arr_result) == 0){  $arr_result[1] = $row;  } else {  $arr_result[] = $row;  }  }  

Или если ключ должен быть id из строки

 while ($row = fetchRow($result)) {   $arr_result[$row['id']] = $row; }  

Комментарии:

1. По некоторым причинам OP хочет, чтобы массив был проиндексирован на 1

2. @Cid Спасибо, почти уверен, что ОП на самом деле не знает, чего они на самом деле хотят, но вопросы указывают на то, что вы правы

3. @Cid Или, может быть, они хотели, чтобы это было ценностью id