2016-02-29 1 views
0

Я хочу получить это как отдельный объект, потому что я работаю с JObject на интерфейсе.Как изменить этот код PHP для возврата вложенных результатов

У меня есть массив в данный момент, но я не уверен, как я должен его модифицировать, чтобы он возвращал только один объект.

Это код:

$contacts = array(); 

     while ($row = mysqli_fetch_array($stmt)) 
     { 

      $contact = array("ID" => $row['ProduktID'], 
          "Name" => $row['ProduktNamn'], 
          "Number" => $row['ProduktPris']); 

      array_push($contacts, $contact); 
     } 

     echo json_encode($contacts, JSON_PRETTY_PRINT); 

И цель состоит в том, чтобы он выглядеть примерно так с «результатами», а так я могу достичь всего вещь:

enter image description here

+0

Что вы имеете в виду один объект? Не выполняйте цикл и не нажимайте на массив, если вам не нужны несколько элементов в массиве. – Devon

+0

Я хочу создать json как изображение, упомянутое выше –

+0

Что вы теперь получаете? – Devon

ответ

2

Чтобы обернуть массив контактов в объекте с одним results свойством:

echo json_encode(array('results' => $contacts), JSON_PRETTY_PRINT); 
+0

Я думаю, что это то, чего он на самом деле хочет, независимо от запутанной формулировки его вопроса. Я собирался опубликовать его со ссылкой на http://sandbox.onlinephpfunctions.com/code/6fa069cea33765bb695430c5555b1011178d1c29 – Devon

+0

Прошу прощения за то, что вы сбиваете с толку! Но все-таки это произошло. Спасибо, много парней. Удивительная обратная связь и поддержка. Я довольно новый, так что это потрясающе. Thx снова. –

+0

К следующему выпуску :) Жизнь начинающего программиста;) –

2

Вы можете использовать typecasting для преобразования массива в объект:

$object = (object) $array_name; 

или вручную превратить его в объект

$object = object; 
foreach($arr as $key => $value) 
{ 
    $object->$key = $value; 
} 
+0

Теперь я не получаю 1 объект, я думаю. Когда я это делаю, каждый из строк получает «0», а следующий «1» и т. Д. –

+0

«0»: { «0»: { "ID": "43", "Имя": "pro2", " Номер ": "pris2" }, "1": { "ID": "42", "Имя": "Produkt1", "Номер": "Pris1" } } –

0

Нравится? Имейте в виду, что объект отличается от массива, и ваш вопрос довольно запутан.

while ($row = mysqli_fetch_array($stmt)){ 
     $contact[] = [ 
      "ID" => $row['ProduktID'], 
      "Name" => $row['ProduktNamn'], 
      "Number" => $row['ProduktPris'] 
     ]; 
    } 

    json_encode(['result' => $contact]); // Forget the JSON_PRETTY_PRINT. 

Используя этот метод [], он будет использовать первый доступный числовой индекс, начиная с 0. Таким образом, вы не должны толкать массив.

+0

Я не хочу это как массив. Я хочу отправить информацию как объект. Как и изображение, которое я показал. Потому что я хочу работать с ним как JObject в моем интерфейсе –

+0

@ William.John, вы отправляете строку JSON, а не массив. json_encode будет кодировать его, будь то массив PHP или объект PHP. Это не имеет значения. – Devon

+0

Хм хорошо. Мне было сказано иначе в моей предыдущей теме (где я также показываю свой передний конец). Вы можете посмотреть здесь, если вы хотите увидеть, есть ли что-то не так в моем коде: http://stackoverflow.com/questions/35705061/xamarin-php-i-want-to-make-my-jarray-to-a-job-or-in-c-sharp-xamarin/35705407 # 35705407 –