0

这似乎是一个简单的挑战,但我正在努力。

我想在两个数据库表上使用连接查询来检索记录,并将它们表示为一个数组数组,其中根数组中的每个元素都是父记录,每个嵌套元素代表一个子记录。

SQL 查询工作正常,它返回一组行,其中channel_key列是分组列。

这是我从行填充数组结构的尝试:

$rows = $db->get_results($query);
$key = '';
$programmes = array();

foreach ($rows as $row) {
    $programme = array(
        'title' => $row->title,
        'start' => $row->start,
        'duration' => $row->duration
    );

    $programmes[] = $programme;

    if ($key != $row->channel_key) {
        $channels[] = array(
            'key' => $row->channel_key,
            'programme' => $programmes
        );

        $key = $row->channel_key;
        $programmes = array();
    }
}

不幸的是,这只填充了根级数组(对应于父记录的数组)。

请问有什么建议吗?

谢谢,蒂姆

4

2 回答 2

1

当您将它分配给频道时,您在 $programmes 数组中只有一个节目。

另一种方法是使用 channel_key 构建通道数组。

例如

<?php
$channels = array();
foreach($rows as $row) {
    // Create the channel node if it doesn't exist
    if (!isset($channels[$row->channel_key])) {
        $channels[$row->channel_key] = array(
            'key' => $row->channel_key,
            'programme' => array()
        );
    }

    $programme = array(
        'title' => $row->title,
        'start' => $row->start,
        'duration' => $row->duration
    );

    // Add to the existing channel node.
    $channels[$row->channel_key]['programme'][] = $programme;
}
于 2011-02-24T10:56:17.523 回答
-1

简单的解决方法即可。

$rows = $db->get_results($query);
$key = '';
$programmes = array();

foreach ($rows as $row) {
    $programme = array(
        'title' => $row->title,
        'start' => $row->start,
        'duration' => $row->duration
    );

$programmes[$row->channel_key][] = $programme;
}
于 2011-02-24T11:09:16.980 回答