作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗯,在 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/
我是一名优秀的程序员,十分优秀!