【发布时间】:2013-10-29 01:57:32
【问题描述】:
我有两张桌子,content 和 theme。应该为content 表中的每一行获取几个theme 行。这是我用 PDO 和一个涉及LEFT JOIN 的 mySQL 查询完成的。每次出现主题文件时,输出数组都会给我一个数组(如下)。
我想重新组织该数组,以便每个 contentID 获得一个数组,该数组中包含一个包含每个匹配主题文件的数组。
类似$content=>'theme'['logo'] 这样的想法将获取匹配主题文件之一的值。
如何做到这一点。
array(
array (
contentID => 1,
title => 'test',
subtitle = 'a description',
themeID => 1,
theme_file => 'navigation'
)
array (
contentID => 1,
title => 'test',
subtitle = 'a description',
themeID => 2,
theme_file => 'logo'
)
)
根据要求,我添加了其他代码。实际上,我希望将 3 个表相互嵌套,但为了对其他人有帮助的问题,我将其保留为 2。如果有帮助,这是 mySQL 查询:
SELECT *
FROM content
LEFT JOIN content_theme ON content.contentID = content_theme.contentID
LEFT JOIN theme ON theme.themeID = content_theme.themeID
OR theme.default =1
LEFT JOIN theme_meta ON theme.themeID = theme_meta.themeID
WHERE content.contentID = 9
ORDER BY theme.default DESC
因此,目的是为每个content 行嵌套所有匹配的theme 行,并为每个theme 行嵌套每个匹配的theme_meta 行
数据库的原始输出:
Array
(
[0] => Array
(
[contentID] =>
[0] => 4
[type] => page
[1] => page
[type_alts] =>
[2] =>
[url] => about
[3] => about
[title] => About
[4] => About
[subtitle] =>
[5] =>
[online] => 1
[6] => 1
[req] => 0
[7] => 0
[pos] => 0
[8] => 0
[parent] => 0
[9] => 0
[content_theme_ID] =>
[10] =>
[11] =>
[themeID] => 2
[12] =>
[13] => 2
[theme_type] => general
[14] => general
[theme_file] => logo
[15] => logo
[theme_default] => 1
[16] => 1
[theme_title] => MD Group
[17] => MD Group
[18] => 2
[field] => src
[19] => src
[value] => uploads/img/murphey-dines-group-logo.png
[20] => uploads/img/murphey-dines-group-logo.png
)
[1] => Array
(
[contentID] =>
[0] => 4
[type] => page
[1] => page
[type_alts] =>
[2] =>
[url] => about
[3] => about
[title] => About
[4] => About
[subtitle] =>
[5] =>
[online] => 1
[6] => 1
[req] => 0
[7] => 0
[pos] => 0
[8] => 0
[parent] => 0
[9] => 0
[content_theme_ID] =>
[10] =>
[11] =>
[themeID] => 2
[12] =>
[13] => 2
[theme_type] => general
[14] => general
[theme_file] => logo
[15] => logo
[theme_default] => 1
[16] => 1
[theme_title] => MD Group
[17] => MD Group
[18] => 2
[field] => title
[19] => title
[value] => murphey dines Group
[20] => murphey dines Group
)
[2] => Array
(
[contentID] =>
[0] => 4
[type] => page
[1] => page
[type_alts] =>
[2] =>
[url] => about
[3] => about
[title] => About
[4] => About
[subtitle] =>
[5] =>
[online] => 1
[6] => 1
[req] => 0
[7] => 0
[pos] => 0
[8] => 0
[parent] => 0
[9] => 0
[content_theme_ID] =>
[10] =>
[11] =>
[themeID] =>
[12] =>
[13] => 7
[theme_type] => general
[14] => general
[theme_file] => navigation
[15] => navigation
[theme_default] => 1
[16] => 1
[theme_title] => Main Navigation
[17] => Main Navigation
[18] =>
[field] =>
[19] =>
[value] =>
[20] =>
)
)
【问题讨论】:
-
PHP 非常擅长按照您描述的方式制作嵌套数组。但是您可能需要共享更多代码才能获得有关您所要求的帮助。
-
@JoeT 添加了附加代码。
-
您能否展示查询中的示例结果集?我认为您基本上想遍历所有 ContentID,然后在该循环中运行您的查询,将结果作为关联数组获取并循环分配 $content[$ContentID][$theme] 等于每一行。
-
@JoeT 这正是我想要做的。我将添加数组输出。
标签: php arrays multidimensional-array pdo