gpt4 book ai didi

php - PHP 对象/Sql 查询中的多数组结果

转载 作者:行者123 更新时间:2023-11-29 13:56:11 25 4
gpt4 key购买 nike

我有一个名为 Index 的对象,它有一个名为 _fletter 的属性(在本例中为私有(private)属性)。

我有一个 SQL 查询,它使用以下查询从表中获取所有不同的值:

SELECT DISTINCT fletter FROM books ORDER BY fletter ASC

我调用此查询的方式是通过一个私有(private)函数,该函数执行所有与数据库相关的操作并返回一个变量:

function getFirstLetter() {
// Database stuff omitted
$stmt->execute();
$res = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $res;
}

我将结果赋予 _fletter 属性的方式如下:

$this->_fletter = $this->getFirstLetter();

最终发生的情况是,$this->_fletter 的属性是一个关联数组,当 print_r 给出时:

[0] => Array
(
[fletter] => A
)
// etc.

然后我想使用 foreach 语句,以便它迭代每个 _fletter[x] (其中 x 对应于相关字母)并运行以下 sql 语句

SELECT booktitle, isbn, pages FROM books WHERE booktitle = ':booktitle'

然后我想像前面的示例一样返回结果:

$this->_fletter = $this->getBookTitles();

而且,我的想法是,我希望将新关联数组的结果添加到 _fletter 数组中,其中第一个字母对应于新结果集,大致如下:

[0] => Array
(
[fletter] => [A]
(
[1] => 'A time to kill'
[2] => 'Almost Famous'
)
) //etc - note I may not have written the syntax correct

因此,新查询必须采用“_fletter”的值,运行查询并将结果返回到与第一个字母相同的位置或相同的数组条目下。所以我希望 fletter 成为新结果数组的新键或其他内容

如果我只是将新结果添加到 _fletter 数组中,它只会附加到现有数组,而不使用 [fletter] 的值,而是添加新结果数组的条目:

[15] => Array
(
[fletter] => W
)

[A] => Array
(
[0] => Array
(
[booktitle] => A Time to kill
[isbn] => 1234567890
)

有什么想法可以实现这一点吗?我想避免将 php 放在页面的 html 部分中,但是,如果没有其他选择,我可能不得不这样做。

最佳答案

你真的很难明白自己想要什么。我认为您只需要一个查询和一个 foreach

SELECT fletter, booktitle, isbn, pages FROM books

<?php
$fletters = array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$index = $row['fletter'];
unset($row['fletter']);
$fletters[$index][] = $row;
}

关于php - PHP 对象/Sql 查询中的多数组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15831825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com