выборка нескольких строк и отображение в json - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть PHP код, например:

while ($row2 = mysqli_fetch_assoc($check2)) {
  // $leadarray[] = $row2;
  $service_id[$i] = $row2['service_id'];
  $row1['service_id'][$i] = $service_id[$i];
  $service_name[$i] = $row2['service_name'];
  $row1['service_name'][$i] = $service_name[$i];
  $i++;
}
$leadarray[] = $row1;
$trimmed1['leaddetails'] = str_replace('\r\n', '', $leadarray);
echo json_encode($trimmed1);

, получающий вывод типа

{
  "leaddetails": [
    {
      "service_id": [
        "7",
        "2"
      ],
      "service_name": [
        "Past Control Services",
        "Civil Finishing"
      ],
    }
  ]
}

Я хочу выводить как:

"service_id": [
  1:  "7",
  2: "2"
],
"service_name": [
  1: "Past Control Services",
  2: "Civil Finishing"
],

или

[
  "service_id":  "7",
  "service_name": "Past Control Services",
  "service_id":  "2",
  "service_name": "Civil Finishing",
]

Ответы [ 4 ]

0 голосов
/ 24 апреля 2020

Сначала создайте 2-мерный массив. Затем pu sh на вложенные массивы во время l oop.

$result = ["service_id" => [], "service_name" = []];
while ($row2 = mysqli_fetch_assoc($check2)) {
    $result["service_id"][] = $row["service_id"];
    $result["service_name"][] = $row["service_name"];
}
echo json_encode($result);
0 голосов
/ 24 апреля 2020

второй вариант невозможен, вы можете сделать так [{"service_id":"7", "service_name":"Past Control Services"}, {"service_id":"2", "service_name":"Civil Finishing"}]

0 голосов
/ 24 апреля 2020
[{"service_id":"7", "service_name":"Past Control Services"}, {"service_id":"2", "service_name":"Civil Finishing"}]

используя класс для такой работы

class Data{ 
  $service_id; 
  $service_name; 
} 

$obj = new Array(); 
while ($row2 = mysqli_fetch_assoc($check2)){ 
  $data = new Data(); 
  $data->service_id = $row2['service_id']; 
  $data->service_name = $row2['service_name']; 
  array_push($obj, $data); 
} 
echo json_encode($obj);
0 голосов
/ 24 апреля 2020

$trimmed1 считается объектом при передаче его в json_encode (ассоциативный массив в PHP), потому что вы явно даете ему ключ (считается свойством объекта в JSON):

$trimmed1 = [];
$trimmed1['leaddetails'] = 'foobar';

Это приведет к json_encode кодированию $trimmed1 в объект:

{
   "leaddetails": "foobar"
}

Чтобы получить желаемый результат, пусть $trimmed1 будет считаться массивом при передаче на json_encode.

$trimmed1[] = str_replace('\r\n', '', $leadarray); // push instead of assign
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...