[英]How to Generate Tables columns and rows in PHP from 2 arrays
向所有可能对我的问题感到冒犯或生气的人道歉,我们每天都在学习。 我希望能够从这两个不同的数组中生成一个表格,该表格看起来像我在这张图片中所拥有的表格,也显示在表格中。
我可以用 foreach 循环生成一个普通表,但在这种情况下它变得混乱,我无法尝试任何有形的东西。 所以任何帮助将不胜感激。
示例原始数组
$data1 = array(
'0' => array('time'=> '1.00pm', 'reading' =>'271', 'machine'=>'machine1'),
'1' => array('time'=> '2.00pm', 'reading' =>'261', 'machine'=>'machine1'),
'2' => array('time'=> '3.00pm', 'reading' =>'172', 'machine'=>'machine1'),
'3' => array('time'=> '4.00pm', 'reading' =>'300', 'machine'=>'machine1'),
'4' => array('time'=> '5.00pm', 'reading' =>'142', 'machine'=>'machine1')
);
$data2 = array(
'0' => array('time'=> '1.00pm', 'reading' =>'500', 'machine'=>'machine2'),
'1' => array('time'=> '2.00pm', 'reading' =>'432', 'machine'=>'machine2'),
'2' => array('time'=> '3.00pm', 'reading' =>'109', 'machine'=>'machine2'),
'3' => array('time'=> '4.00pm', 'reading' =>'44', 'machine'=>'machine2'),
'4' => array('time'=> '5.00pm', 'reading' =>'18', 'machine'=>'machine2')
);
所以任何帮助将不胜感激
嗯,这个答案包含所有表格
<?php
$data1 = array(
'0' => array('time'=> '1.00pm', 'reading' =>'271', 'machine'=>'machine1'),
'1' => array('time'=> '2.00pm', 'reading' =>'261', 'machine'=>'machine1'),
'2' => array('time'=> '3.00pm', 'reading' =>'172', 'machine'=>'machine1'),
'3' => array('time'=> '4.00pm', 'reading' =>'300', 'machine'=>'machine1'),
'4' => array('time'=> '5.00pm', 'reading' =>'142', 'machine'=>'machine1')
);
$data2 = array(
'0' => array('time'=> '1.00pm', 'reading' =>'500', 'machine'=>'machine2'),
'1' => array('time'=> '2.00pm', 'reading' =>'432', 'machine'=>'machine2'),
'2' => array('time'=> '3.00pm', 'reading' =>'109', 'machine'=>'machine2'),
'3' => array('time'=> '4.00pm', 'reading' =>'44', 'machine'=>'machine2'),
'4' => array('time'=> '5.00pm', 'reading' =>'18', 'machine'=>'machine2')
);
echo $data1[0]['machine'];
echo '<table>';
echo '<tr>';
echo "<th>Time</th>";
echo "<th>reading</th>";
echo '</tr>';
foreach ($data1 as $key => $value) {
echo "<tr>";
echo "<td>" . $value['time'] . "</td>";
echo "<td>" . $value['reading'] . "</td>";
echo "</tr>";
}
echo '</table>';
echo '<br>';
echo $data2[0]['machine'];
echo '<table>';
echo '<tr>';
echo "<th>Time</th>";
echo "<th>reading</th>";
echo '</tr>';
foreach ($data2 as $key => $value) {
echo "<tr>";
echo "<td>" . $value['time'] . "</td>";
echo "<td>" . $value['reading'] . "</td>";
echo "</tr>";
}
echo '</table>';
echo '<br>';
echo '<br>';
echo '<table>';
echo "<tr>";
echo "<th>machin</th>";
foreach ($data1 as $key => $value) {
echo "<th>" . $value['time'] . "</th>";
}
echo "</tr>";
echo "<tr>";
echo "<td>machine1</td>";
foreach ($data1 as $key => $value) {
echo "<td>" . $value['reading'] . "</td>";
}
echo "</tr>";
echo "<tr>";
echo "<td>machine2</td>";
foreach ($data1 as $key => $value) {
echo "<td>" . $data2[$key]['reading'] . "</td>";
}
echo "</tr>";
echo '</table>';
echo '<br>';
echo '<br>';
echo '<table>';
echo '<tr>';
echo "<th>Time</th>";
echo "<th>machine1</th>";
echo "<th>machine2</th>";
echo '</tr>';
foreach ($data2 as $key => $value) {
echo "<tr>";
echo "<td>" . $value['time'] . "</td>";
echo "<td>" . $data1[$key]['reading'] . "</td>";
echo "<td>" . $value['reading'] . "</td>";
echo "</tr>";
}
echo '</table>';
echo '<br>';
?>
你可以试试这个以获得所需的结果
$header = ['machine','1.00pm','2.00pm','3.00pm','4.00pm','5.00pm'];
$html = "<table border='1'><tr>";
for($i=0; $i<count($header); $i++){
$html.= "<th>".$header[$i]."</th>";
}
$html .= "</tr>";
$res = [
array_merge(
array_unique(array_column($data1,'machine')),
array_column($data1, 'reading','time')
),
array_merge(
array_unique(array_column($data2,'machine')),
array_column($data2, 'reading','time')
)
];
foreach($res as $key => $value){
$html .= "<tr>";
foreach($header as $ikey => $ivalue){
$index = ($ivalue == 'machine') ? 0 : $ivalue;
$html .= "<td>".$res[$key][$index]."</td>";
}
$html .= "</tr>";
}
$html .= "</table>";
模式二。
$header = ['time','machine1','machine2'];
$html = "<table border='1'><tr>";
for($i=0; $i<count($header); $i++){
$html.= "<th>".$header[$i]."</th>";
}
$res = [
array_merge(
array_column($data1, 'reading','time')
),
array_merge(
array_column($data2, 'reading','time')
)
];
for($i=0;$i<count($res)-1;$i++){
foreach($res[$i] as $key => $value){
$html .= '<tr>';
$html .= '<td>'.$key.'</td>';
$html .= '<td>'.$res[$i][$key].'</td>';
$html .= '<td>'.$res[$i+1][$key].'</td>';
$html .= '</tr>';
}
}
echo $html;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.