0

我有两张桌子,contentthemetheme应该为表中的每一行获取几行content。这是我用 PDO 和一个涉及LEFT JOIN. 每次出现主题文件时,输出数组都会给我一个数组(如下)。

我想重新组织数组,以便我得到一个数组,每个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] => 
        )

)
4

1 回答 1

0

我想你可以像这样嵌套数组。

$aContent = array();
foreach($aRows AS $aRow){
    $aContent[$aRow['contentID']][] = array(
        'theme' => array(
            'themeID' => $aRow['themeID'],
            'themeType' => $aRow['theme_type'],
            'themeTitle' => $aRow['theme_title']
        ),
        'type' => 'page',
    );
}
于 2013-10-20T17:04:33.560 回答