繁体   English   中英

如何从 2 个数组在 PHP 中生成表列和行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM