Как изменить результат в массиве?

у меня есть такой результат массива

{"data":{"NamaKecamatan":"BEJI","total":"2","laki":"1","cewe":"1"}}
{"data":{"NamaKecamatan":"BOJONGSARI","total":0,"laki":0,"cewe":0}}
{"data":{"NamaKecamatan":"CILODONG","total":"2","laki":"1","cewe":"1"}}
{"data":{"NamaKecamatan":"CIMANGGIS","total":"4","laki":"2","cewe":"2"}}

но я хочу изменить массив следующим образом:

data: [{NamaKecamatan: "BEJI", total: "46", laki: "18", cewe: "28"},…]
0: {NamaKecamatan: "BEJI", total: "46", laki: "18", cewe: "28"}
1: {NamaKecamatan: "BOJONGSARI", total: "20", laki: "7", cewe: "13"}
2: {NamaKecamatan: "CILODONG", total: "93", laki: "48", cewe: "45"}
3: {NamaKecamatan: "CIMANGGIS", total: "96", laki: "47", cewe: "49"}
4: {NamaKecamatan: "CINERE", total: "13", laki: "7", cewe: "6"}]

это мой контроллер в php

public function countByKecamatan(){
  $kecamatan = $this->db->query("SELECT IDKecamatan, NamaKecamatan FROM mskecamatan ORDER BY NamaKecamatan ASC")->result_array();
  foreach ($kecamatan as $keykecamatan) {
    $result = $this->MsLaporan->dataNullByKecamatan($dateStart, $dateEnd, $kategori, $keykecamatan['IDKecamatan']);
      if ($result == NULL) {
          $row = array(
              "NamaKecamatan" => $keykecamatan['NamaKecamatan'], 
              "total" => 0, 
              "laki" => 0, 
              "cewe" => 0, 
            );
      }else{
          $row = $result[0];
        }
        $data = array(
             "data" => $row,
           );
        echo json_encode($data);
   }
}

пожалуйста, помогите мне изменить эти данные

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

ggorlen 16.06.2019 07:02
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
49
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете подойти к этому следующим образом

public function countByKecamatan(){
  $kecamatan = $this->db->query("SELECT IDKecamatan, NamaKecamatan FROM mskecamatan ORDER BY NamaKecamatan ASC")->result_array();
  $i = 0;
  foreach ($kecamatan as $keykecamatan) {
    $result = $this->MsLaporan->dataNullByKecamatan($dateStart, $dateEnd, $kategori, $keykecamatan['IDKecamatan']);
    if ($result == NULL) {
    $row = array(
          "NamaKecamatan" => $keykecamatan['NamaKecamatan'], 
          "total" => 0, 
          "laki" => 0, 
          "cewe" => 0, 
        );
  }else{
    $row = $result[0];
  }
  ($i > 0) ? ($data[] = $row) : ($data = array('data' => $row));
  $i++;
 }
echo json_encode($data);
}
Ответ принят как подходящий
$data = '[{"data":{"NamaKecamatan":"BEJI","total":"2","laki":"1","cewe":"1"}},
{"data":{"NamaKecamatan":"BOJONGSARI","total":0,"laki":0,"cewe":0}},
{"data":{"NamaKecamatan":"CILODONG","total":"2","laki":"1","cewe":"1"}},
{"data":{"NamaKecamatan":"CIMANGGIS","total":"4","laki":"2","cewe":"2"}}]';

$array_data = json_decode($data, ture);

$result = [];

foreach($array_data as $item) {
    $result['data'][] = $item['data'];
}

return json_encode($result);

я думаю это тебе поможет

BehnamPro 16.06.2019 07:54

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

    $data = array(
         "data" => $row,
       );
    echo json_encode($data);

Во-первых, вы строите массив с дополнительным уровнем, который, как вы говорите, хотите удалить. Затем вторая строка кода выводит каждый фрагмент данных по одному. Вам нужно создать список всех записей, а затем вернуть полные данные за один раз.

public function countByKecamatan(){
  // Create empty array for data
  $data = [];
  $kecamatan = $this->db->query("SELECT IDKecamatan, NamaKecamatan FROM mskecamatan ORDER BY NamaKecamatan ASC")->result_array();
  foreach ($kecamatan as $keykecamatan) {
    $result = $this->MsLaporan->dataNullByKecamatan($dateStart, $dateEnd, $kategori, $keykecamatan['IDKecamatan']);
      if ($result == NULL) {
          $row = array(
              "NamaKecamatan" => $keykecamatan['NamaKecamatan'], 
              "total" => 0, 
              "laki" => 0, 
              "cewe" => 0, 
            );
      }else{
          $row = $result[0];
      }
      // Add new row of data to data to be returned
      $data[] = $row;
   }
   // Return all of the data in JSON format
   return json_encode($data);
}

Обратите внимание, что это возвращает значение, а не повторяет его - вам может потребоваться изменить это, если при вызове контроллера вашей среде необходимо кодировать его каким-то другим способом (например, как часть объекта Response).

Другие вопросы по теме