Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO输出到JSON格式_Php_Json_Pdo - Fatal编程技术网

Php PDO输出到JSON格式

Php PDO输出到JSON格式,php,json,pdo,Php,Json,Pdo,我这里有一点简单的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 = $pd

我这里有一点简单的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);

然而,这与我想要实现的输出并不完全相同,但我无法计算出获得我想要的东西的逻辑。

为了使您的代码更通用,请使用
foreach
,而不是
for

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

echo json_encode($words);

尝试
$words['output']['id']=$x$单词['output']['random_composition']=$un3取而代之。然后将json_encode命令移到循环外,在末尾为什么执行两次
LIMIT 6
不会做同样的事情?这是为了得到两组随机字。。。如果是一张单子,我必须把单子切成两半,例如,从单子的下半部分得到第一个单词,并将其与第一个单词连接起来,然后增加1,将上半部分的第二个单词与下半部分的第二个单词连接起来……谢谢!我不得不删除
$list2[$k]
末尾的逗号。然后它完美地工作了。再次感谢
foreach ($list1 as $k => $v) {
    $words['output'][] = [
        'id' => $k,
        'random_combination' => $v . '.' . $list2[$k], 
    ];
}

echo json_encode($words);