clo*_*3o5 1 php arrays foreach html-table
我正在上一门叫做数据库编程的课。我们得到了一个数据集并将其放入我们的服务器中。现在我必须使用 jquery 插件来帮助可视化该数据。我正在使用 Graph Us 插件并尝试使用“填写”选项。
我的教授帮助我创建了这个函数:
<?php
include 'connect.php';
$country_query = "SELECT DISTINCT Country FROM FemaleMaleRatioNew";
$result = mysqli_query($sql_link, $country_query);
$new_row = array();
while ($row = mysqli_fetch_assoc($result)) {
$country = $row['Country'];
$query = sprintf("SELECT Year, Value FROM FemaleMaleRatioNew WHERE Country = '%s'", $country);
$country_result = mysqli_query($sql_link, $query);
while ($country_row = mysqli_fetch_assoc($country_result) ) {
$new_row[$country][] = array('year' => $country_row['Year'],
'value'=> $country_row['Value']
);
}
}
//print_r($new_row);
?>
Run Code Online (Sandbox Code Playgroud)
它print_r($new_row);只是为了确保它有效并且确实有效,它在激活时打印出数组。
然后他指导我创建如下表格:
<body>
<table id="demo">
<?php foreach($new_row as $row):?>
<tr>
<td><?=$row['year'];?></td>
<td><?=$row['country'];?></td>
</tr>
<?php endforeach;?>
</table>
<script type="text/javascript">
$(document).ready(function() {
// Here we're "graphing up" only the cells with the "data" class
$('#demo td').graphup({
// Define any options here
colorMap: 'heatmap',
painter: 'fill',
// ...
});
});
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
我还需要做什么才能让表正常工作?我似乎无法弄清楚。它所做的只是显示空白。
很抱歉,如果这个问题措辞不正确,或者如果我没有说清楚任何事情,请告诉我。
$new_row 变量中每个国家/地区都有多行。您必须首先迭代国家/地区,然后迭代各个数据行:
<?php foreach($new_row as $country => $rows): ?>
<?php foreach($rows as $row): ?>
<tr>
<td><?=$country;?></td>
<td><?=$row['Year'];?></td>
<td><?=$row['Value'];?></td>
</tr>
<?php endforeach;?>
<?php endforeach;?>
Run Code Online (Sandbox Code Playgroud)
另请注意,您需要冒号 ':' 而不是分号 ';' 声明后foreach。这种语法(不太为人所知)在这里描述: http://php.net/manual/en/control-structs.alternative-syntax.php
如果您想显示每个国家/地区的某种汇总(例如总和),并且您想用 PHP(而不是 MySQL)计算它,您可以这样做:
<?php foreach($new_row as $country => $rows):
$sum = 0;
foreach($rows as $row):
$sum += $row['Value'];
endforeach;
?>
<tr>
<td><?=$country;?></td>
<td><?=$sum;?></td>
</tr>
<?php endforeach;?>
Run Code Online (Sandbox Code Playgroud)