Переупорядочить массив Результат MySQLi Query

0

У меня есть запрос MySQLi, который извлекает данные из моей базы данных в формате json. Теперь я хочу изменить результат, чтобы сформировать новый массив с использованием PHP.

$conn = new mysqli("localhost", "root", "", "angular");

$out = array();

$sql = "SELECT * FROM members";
$query = $conn->query($sql);

while($row=$query->fetch_array()){
    $out[] = $row;
}

echo json_encode($out);

Результат этого запроса примерно такой:

[
  {
    "0": "1",
    "1": "Neovic",
    "2": "Devierte",
    "3": "Silay City",
    "memid": "1",
    "firstname": "Neovic",
    "lastname": "Devierte",
    "address": "Silay City"
  },
  {
    "0": "2",
    "1": "Julyn",
    "2": "Divinagracia",
    "3": "E.B. Magalona",
    "memid": "2",
    "firstname": "Julyn",
    "lastname": "Divinagracia",
    "address": "E.B. Magalona"
  },
  {
    "0": "3",
    "1": "Gemalyn",
    "2": "Cepe",
    "3": "Bohol",
    "memid": "3",
    "firstname": "Gemalyn",
    "lastname": "Cepe",
    "address": "Bohol"
  },
  {
    "0": "4",
    "1": "Tintin ",
    "2": "Demapanag",
    "3": "Talisy City",
    "memid": "4",
    "firstname": "Tintin ",
    "lastname": "Demapanag",
    "address": "Talisy City"
  },
  {
    "0": "5",
    "1": "Tintin ",
    "2": "Devierte",
    "3": "Silay City",
    "memid": "5",
    "firstname": "Tintin ",
    "lastname": "Devierte",
    "address": "Silay City"
  }
]

Теперь я хочу получить результат с чем-то вроде этого:

[
    firstname: {"Neovic", "Julyn", "Gemalyn", "Tintin", "Tintin"},
    lastname: {"Devierte", "Divinagracia", "Cepe", "Demapanag", "Devierte"}
]

Можно ли это сделать в PHP? любая помощь приветствуется.

  • 0
    ты пробовал что-нибудь для этого ....
  • 0
    Если вам не нужны другие данные, вы также можете SELECT firstname,lastname FROM members вместо SELECT * .
Показать ещё 1 комментарий
Теги:
mysqli

3 ответа

1
Лучший ответ

1. Поскольку вам не нужны все данные, выполните запрос следующим образом:

$sql = "SELECT firstname,lastname FROM members";

2.Измените код цикла, как показано ниже, и вы выполните: -

while($row=$query->fetch_array()){
    $out['firstname'][] = $row['firstname'];
    $out['lastname'][] = $row['lastname'];
}

Таким образом, полный код должен быть: -

$conn = new mysqli("localhost", "root", "", "angular");

$out = array();

$sql = "SELECT firstname,lastname FROM members";
$query = $conn->query($sql);

while($row=$query->fetch_array()){
    $out['firstname'][] = $row['firstname'];
    $out['lastname'][] = $row['lastname'];
}

echo json_encode($out);
  • 0
    @GYaN не понимаю, что ты говоришь
  • 0
    Ничего сейчас ... Все хорошо +1
Показать ещё 2 комментария
2

Вы можете хранить данные в отдельных массивах:

<?php
$firsts = [] ;
$lasts = [] ;
while ($row = $query->fetch_array()) {
    $firsts[] = $row['firstname'] ;
    $lasts[] = $row['lastname'] ;
}
$out = ['firstname' => $firsts, 'lastname' => $lasts] ;
?>
  • 0
    Нет необходимости создавать два отдельных массива, делать назначения для этих двух массивов внутри while а затем присваивать их окончательному массиву. Вы можете сделать это с одной переменной. проверьте мой ответ один раз
1
<?php

$i=0;
while ($row = $query->fetch_array())
{
    $user[$i]['first_name'] = $row['firstname'] ;
    $user[$i]['last_name'] = $row['lastname'] ;
   $i++;

 }
json_encode($user);
?>
  • 0
    Не нужно создавать два отдельных массива, сначала присваивать им, а затем присваивать их окончательному массиву. Вы можете сделать это с одной переменной. проверьте мой ответ один раз
  • 0
    Ты уверен. Потому что я думаю, что я прав (уже проверено). Хотя ваш ответ далек от того, чего ожидал ОП.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню