我试图使用PHP构建矩阵类表。 MySQL的表结构如下:
表:席位
id rows columns value
1 r1 c1 1
2 r2 c2 2
3 r3 c3 3
等..行数和列数将有所不同,名称也会有所不同,如a1,a2,b2,b3
我只想在下面显示它:
c1 c2 c3
r1 1 0 0
r2 0 2 0
r3 0 0 3
等。
我如何显示如上?
答案 0 :(得分:1)
这里的想法是将表格数组转换为二维矩阵,第一列和第二列是"键"对于二维矩阵。
现在假设您已经使用SQL从表中获取了数组 以下三个步骤将起到魔力:
1)使用表格数列中的键初始化二维矩阵。
// Initializing the two dimensional matrix with zeros
function initialize_2d($m, $value = 0) {
$result = array();
for ($i=1; $i <= $m ; $i++) {
for ($j=1; $j <= $m ; $j++) {
$result['r'.$i]['c'.$j] = 0;
}
}
return $result;
}
2)将对应值分配给矩阵
// Assign values from Table Structure to Two Dimensional Matrix
function convert_2d($m_arr){
$matrix_arr = initialize_2d(sizeof($m_arr));
foreach($m_arr as $sub_arr)
{
$matrix_arr[$sub_arr[0]][$sub_arr[1]] = $sub_arr[2];
}
return $matrix_arr;
}
3)打印矩阵
// Prints the 2D Matrix
function print_2d($matrix_arr){
$table_html = '';
$table_html .= '<table>
<tr><td></td>';
foreach ($matrix_arr as $matrix_subarr) {
foreach ($matrix_subarr as $key => $value) {
$table_html .= '<td>'.$key.'</td>';
}
break;
}
foreach ($matrix_arr as $key => $matrix_subarr) {
$table_html .= '<tr>
<td>'.$key.'</td>';
foreach ($matrix_subarr as $value) {
$table_html .='<td>'.$value.'</td>';
}
$table_html .= '</tr>';
}
$table_html .= '</table>';
return $table_html;
}
使用以下测试代码测试上述功能:
// Array from Table
$m_arr = array(array("r1","c1","1"),array("r2","c2","2"),array("r3","c3","3"));
$matrix_arr = convert_2d($m_arr);
$table_html = print_2d($matrix_arr);
echo $table_html;
答案 1 :(得分:0)
使用查询:
SELECT rows, columns, value
FROM yourTable
ORDER BY rows, columns
然后循环处理结果。每当rows
值更改时,请在HTML表格中开始新的<tr>
。
答案 2 :(得分:0)
要添加Barmar的响应,最简单的方法是将数据库查询的结果视为数组,例如:
$sql = "Select * from yourtable order by rows, columns";
$results = mysqli->query($sql);
While ($row = $results-> fetch_array()){
$rows[]=$row;
}
Foreach ( $rows as $row){
$row['rows'];
$row['columns'];
}
您需要修改foreach循环以添加您要查找的HTML。另外,mysqli fetch数组将在以下链接中详细讨论:http://us2.php.net/mysqli_fetch_array
答案 3 :(得分:0)
您可以循环播放数据库中的项目。 对于您制作td的每个项目,以及为每行创建一个tr
例如
<?php
echo "<Table>";
echo "<tr>";
echo "<td></td>";
echo "<td>C1</td>";
echo "<td>C2</td>";
echo "<td>C3</td>";
echo "</tr>";
echo "<tr>";
echo "<td>r1</td>";
echo "<td>1</td>";
echo "<td>0</td>";
echo "<td>0</td>";
echo "</tr>";
echo "<tr>";
echo "<td>r2</td>";
echo "<td>0</td>";
echo "<td>2</td>";
echo "<td>0</td>";
echo "</tr>";
echo "<tr>";
echo "<td>r3</td>";
echo "<td>0</td>";
echo "<td>0</td>";
echo "<td>3</td>";
echo "</tr>";
echo "</table>";
?>
您可以从变量或类似这样的mysql文本加载文本而不是文本
<php?
//everything is the same but here is an example of a <td>
$test = "hello world";
echo "<td>".$text."</td>";
?>
答案 4 :(得分:-1)
<?php
function matrics($int){
$j = $int*$int;
for($i=1;$i<=$j;$i++) {
echo $i.' ';
if($i%$int==0)
echo '<br/>';
}
}
matrics(4);
?>