PHP создать массив с моим запросом sqli, а не массив объектов - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь создать массив с результатом запроса MySQL, но вместо этого я делаю массив объектов.

Безуспешно пытались преобразовать массив объектов в массив, это лучший подход?

echo json_decode(json_encode($iconsArray), true); // didnt work

Это мой запрос

function listIcons(){
  global $link;
  $queryAssets = "SELECT DISTINCT icon_1,icon_2,icon_3,icon_4 FROM icons";
  $resultqueryAssets = mysqli_query($link, $queryAssets) or 
  die(mysqli_error($link));

  while ($row = mysqli_fetch_assoc($resultqueryAssets)) {

    $iconsArray[] = $row;
  }

  $allIcons = json_encode($iconsArray);
  echo $allIcons;
  return array($allIcons);
}

allIcons outout

$allIcons = [
  0:{icon_1: "01_a", icon_2: "01_b", icon_3: "01_c", icon_4: "01_d"}
  1{icon_1: "02_a", icon_2: "02_b", icon_3: "02_c", icon_4: "02_d"}
]

И вывод, который мне нужен, но не может достичь

$allIcons = [
  0:"01_a"
  1:"02_a"
  2:"01_b"
  3:"02_b"
  4:"03_a"
  5:"02_b"
  ...
]

1 Ответ

0 голосов
/ 12 мая 2018

Скорее всего, это проще всего сделать:

<?php
// ....
$queryAssets = "SELECT DISTINCT icon_1,icon_2,icon_3,icon_4 FROM icons";
$resultqueryAssets = mysqli_query($link, $queryAssets) or 
die(mysqli_error($link));

while ($row = mysqli_fetch_assoc($resultqueryAssets)) {
    foreach ($row as $icon) {
        $icons[] = $icon;
    }
}
var_dump($icons);

Альтернативой без дополнительного цикла будет такая вещь:

<?php
// ....
$queryAssets = "SELECT DISTINCT icon_1,icon_2,icon_3,icon_4 FROM icons";
$resultqueryAssets = mysqli_query($link, $queryAssets) or 
die(mysqli_error($link));

$icons = [];
while ($row = mysqli_fetch_assoc($resultqueryAssets)) {
    $icons = array_merge($icons, array_values($row));
}
var_dump($icons);

На самом деле все становится проще, если вы неt вообще получить ассоциативный массив:

<?php
// ....
$queryAssets = "SELECT DISTINCT icon_1,icon_2,icon_3,icon_4 FROM icons";
$resultqueryAssets = mysqli_query($link, $queryAssets) or 
die(mysqli_error($link));

$icons = [];
while ($row = mysqli_fetch_row($resultqueryAssets)) {
    $icons = array_merge($icons, $row);
}
var_dump($icons);

Я не запускал эти фрагменты кода, просто набрал их.Надеюсь, в них нет глупой опечатки ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...