我使用此代码:
$result = mysql_query("SELECT * FROM data WHERE user_id='$user_id'");
$output_array = array();
while ($row = mysql_fetch_array($result)) {
if(!isset($output_array[$row['plant_id']]) || !is_array($output_array[$row['plant_id']])){
$output_array[$row['plant_id']] = array();
}
$output_array[$row['plant_id']][$row['date']] = $row['value'];
}
获取此数组:
Array
(
[100] => Array
(
[2011, 03, 03] => 111111
[2010, 12, 03] => 123123
)
[101] => Array
(
[2011, 01, 01] => 123555
[2011, 01, 27] => 999
[2011, 04, 20] => 123555
)
)
使用Smarty我将这些值循环如下(在JS中):
{foreach from=$output_array key=plant_id item=date_value}
name: '{$plant_id}',
data: [{foreach key=date item=value from=$date_value}
[Date.UTC({$date}), {$value}],
{/foreach}]
{/foreach}
但是现在我希望能够在原始PHP(没有Smarty)上恢复工作 - 有没有人知道如何将这些Smarty循环转换回PHP?
非常感谢任何帮助/指示!
答案 0 :(得分:2)
我使用了替代控制结构语法(foreach(): ... endforeach
而不是foreach() { ... }
),因为我相信它在视图中更清晰,并且被广泛使用。
<?php foreach($output_array as $plant_id => $date_value): ?>
name: '<?php echo $plant_id; ?>',
date: [<?php foreach($date_value as $date => $value): ?>
[Date.UTC(<?php echo $date; ?>, <?php echo $value; ?>],
<?php endforeach; ?>]
<?php endforeach; ?>
顺便说一句,如果这是JavaScript,你应该知道IE在列表中跟踪,
时会绊倒。
此外,除了调用Date.UTC
之外,您还可以使用json_encode()
轻松地将此数据结构作为JSON回显。