这似乎是一个简单的挑战,但我正在努力。
我想在两个数据库表上使用连接查询检索记录,并将它们表示为数组数组,其中根数组中的每个元素都是父记录,每个嵌套元素代表一个子记录。
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();
}
}
不幸的是,这只会填充根级别数组(与父记录对应的数组)。
有什么建议吗?
谢谢, 添
答案 0 :(得分:1)
当您将它分配给频道时,$ programs数组中只有一个程序。
另一种方法是使用channel_key构建通道数组。
e.g。
<?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;
}
答案 1 :(得分:-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;
}