Вывод PDO в формат JSON - PullRequest
       3

Вывод PDO в формат JSON

0 голосов
/ 17 сентября 2018

У меня есть немного PHP здесь:

$root="../../";
include $root . 'config/config.php';
require $root . 'vendor/autoload.php';

$list = "SELECT words FROM random_words ORDER BY RAND() LIMIT 3";

$list1 = $pdo->query($list)->fetchAll(PDO::FETCH_COLUMN);
$list2 = $pdo->query($list)->fetchAll(PDO::FETCH_COLUMN);

Я хотел бы пройтись по результатам $list1 и вывести случайное слово, соединенное с соответствующим случайным словом из list2, чтобы в итоге получить этот тип вывода JSON

[{
  "id": 0,
  "random_combination": "scans.graduate"
}, {
  "id": 1,
  "random_combination": "apricot.dudley"
}, {
  "id": 2,
  "random_combination": "flushed.subscript"
}]

Однако мне трудно понять, как мне этого добиться.

Я смог собрать что-то вроде этого:

$words = array();

for ($x = 0; $x <= 2; $x++) {

    $un1 = $list1[$x];
    $un2 = $list2[$x];
    $un3 = $un1 . "." . $un2;

    $words['output']['id'][] = $x;
    $words['output']['random_combination'][] = $un3;

    $output = json_encode($words);

}

print_r($words);

Возвращая print_r $ слов:

Array
(
    [output] => Array
        (
            [id] => Array
                (
                    [0] => 0
                    [1] => 1
                    [2] => 2
                )

            [random_combination] => Array
                (
                    [0] => scans.graduate
                    [1] => apricot.dudley
                    [2] => flushed.subscript
                )

        )

)

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

1 Ответ

0 голосов
/ 17 сентября 2018

Чтобы сделать ваш код более общим, используйте foreach вместо for:

foreach ($list1 as $k => $v) {
    $words['output'][] = [
        'id' => $k,
        'random_combination' => $v . '.' . $list2[$k], 
    ];
}

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