gpt4 book ai didi

php - 我如何在 PHP 中的另一个数组中转换这个 M-N mysql 数组? (里面的例子)

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

嗯,在 mysql 的 M-N 关系中得到这样的数组是很常见的:

[0]
'book_id' => 1
'title' => 'title'
'author_id' => 1
'author_name' => 'name1'

[1]
'book_id' => 1
'title' => 'title'
'author_id' => 2
'author_name' => 'name2'

那么,有一种优雅/简单的方法可以将这种类型或数组转换为类似这样的东西吗?

'book_id' => 1
'title' => 'title'
'authors' => array( 0 => array( 'author_id' => 1, 'author_name' => 'name1' ),
1 => array( 'author_id' => 2, 'author_name' => 'name2' ) )

我没有找到任何脚本或函数的组合,使这个......而且很常见,也许我没有正确搜索..不知道如何调用问题......

有什么想法或经验吗?

谢谢:)

PS:我不想在 MySQL 中使用 GROUP BY + GROUP CONCACT,我发现那个非常难看的解决方案...

编辑:我正在做一些通用的事情,而不仅仅是为了解决这个特定的问题..

最佳答案

我会在 SQL 中执行 JOIN,然后将结果后处理到 PHP 代码中的嵌套数组中。

$bookkeys = array_flip(array("book_id", "title"));
$authorkeys = array_flip(array("author_id", "author_name"));

$stmt = $dbh->query("...");

$books = array();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
if (!array_key_exists($row["book_id"], $books)) {
$books[ $row["book_id"] ] = array_intersect_key($row, $bookkeys);
}
$books[ $row["book_id"] ]["authors"][] = array_intersect_key($row, $authorkeys);
}

如果你希望最终的数组是一个序数数组而不是以 book_id 为键,你可以转换它:

$books = array_values($books);

关于php - 我如何在 PHP 中的另一个数组中转换这个 M-N mysql 数组? (里面的例子),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8705948/

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