Php 从具有不同长度和值的数组创建表
我想根据Php 从具有不同长度和值的数组创建表,php,html,Php,Html,我想根据[age]值作为标题创建一个表。我设法创建了表,但问题是,我的数据没有正确放置。[age]基于[data][x]值的唯一展平列表。从阵列数据来看,C83不应具有2D数据,因为没有[data][x]=2 Array ( [25p] => Array ( [0] => Array ( [id] => 353 [label] => C81
[age]
值作为标题创建一个表。我设法创建了表,但问题是,我的数据没有正确放置。[age]
基于[data][x]
值的唯一展平列表。从阵列数据来看,C83
不应具有2D数据,因为没有[data][x]=2
Array
(
[25p] => Array
(
[0] => Array
(
[id] => 353
[label] => C81
[casting] => 21 Mar 2017
[data] => Array
(
[0] => Array
(
[x] => 1
[y] => 6.220000
)
[1] => Array
(
[x] => 2
[y] => 10.220000
)
[2] => Array
(
[x] => 7
[y] => 21.440000
)
[3] => Array
(
[x] => 28
[y] => 30.780000
)
)
)
[1] => Array
(
[id] => 354
[label] => C82
[casting] => 21 Mar 2017
[data] => Array
(
[0] => Array
(
[x] => 1
[y] => 8.000000
)
[1] => Array
(
[x] => 3
[y] => 20.890000
)
[2] => Array
(
[x] => 6
[y] => 30.670000
)
[3] => Array
(
[x] => 7
[y] => 32.555000
)
[4] => Array
(
[x] => 28
[y] => 51.110000
)
)
)
[2] => Array
(
[id] => 355
[label] => C83
[casting] => 21 Mar 2017
[data] => Array
(
[0] => Array
(
[x] => 1
[y] => 7.110000
)
[1] => Array
(
[x] => 3
[y] => 19.780000
)
[2] => Array
(
[x] => 6
[y] => 23.560000
)
[3] => Array
(
[x] => 7
[y] => 32.225000
)
[4] => Array
(
[x] => 15
[y] => 38.890000
)
)
)
[age] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 6
[4] => 7
[5] => 15
[6] => 28
)
)
)
下面是生成上表的代码
+---------------+----------+-----------+-----------+-----------+-----------+-----+-----+
| Monitor Label | 1D | 2D | 3D | 6D | 7D | 15D | 28D |
+---------------+----------+-----------+-----------+-----------+-----------+-----+-----+
| C81 | 6.220000 | 10.220000 | 21.440000 | 30.780000 | |
| |
| C82 | 8.000000 | 20.890000 | 30.670000 | 32.555000 | 51.110000 |
| |
| C83 | 7.110000 | 19.780000 | 23.560000 | 32.225000 | 38.890000 |
| |
+---------------+----------+-----------+-----------+-----------+-----------+-----+-----+
您可以在下面的代码中尝试,我在其中循环了一段时间,并用数据中的“x”值进行检查
a:4:{s:3:"30n";a:2:{i:0;a:4:{s:2:"id";i:423;s:5:"label";s:3:"D43";s:7:"casting";s:11:"05 Apr 2017";s:4:"data";a:5:{i:0;a:2:{s:1:"x";i:1;s:1:"y";s:8:"7.330000";}i:1;a:2:{s:1:"x";i:2;s:1:"y";s:9:"13.560000";}i:2;a:2:{s:1:"x";i:3;s:1:"y";s:9:"16.890000";}i:3;a:2:{s:1:"x";i:7;s:1:"y";s:9:"38.000000";}i:4;a:2:{s:1:"x";i:27;s:1:"y";s:9:"32.670000";}}}s:3:"age";a:5:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:7;i:4;i:27;}}s:3:"30p";a:5:{i:0;a:4:{s:2:"id";i:428;s:5:"label";s:3:"D48";s:7:"casting";s:11:"05 Apr 2017";s:4:"data";a:5:{i:0;a:2:{s:1:"x";i:1;s:1:"y";s:8:"8.000000";}i:1;a:2:{s:1:"x";i:2;s:1:"y";s:9:"15.560000";}i:2;a:2:{s:1:"x";i:3;s:1:"y";s:9:"20.670000";}i:3;a:2:{s:1:"x";i:7;s:1:"y";s:9:"30.440000";}i:4;a:2:{s:1:"x";i:27;s:1:"y";s:9:"42.885000";}}}i:1;a:4:{s:2:"id";i:238;s:5:"label";s:3:"a70";s:7:"casting";s:11:"23 Jan 2017";s:4:"data";a:5:{i:0;a:2:{s:1:"x";i:1;s:1:"y";s:8:"9.560000";}i:1;a:2:{s:1:"x";i:3;s:1:"y";s:9:"18.890000";}i:2;a:2:{s:1:"x";i:4;s:1:"y";s:9:"22.890000";}i:3;a:2:{s:1:"x";i:8;s:1:"y";s:9:"31.775000";}i:4;a:2:{s:1:"x";i:28;s:1:"y";s:9:"40.220000";}}}i:2;a:4:{s:2:"id";i:240;s:5:"label";s:3:"a72";s:7:"casting";s:11:"23 Jan 2017";s:4:"data";a:6:{i:0;a:2:{s:1:"x";i:1;s:1:"y";s:8:"9.330000";}i:1;a:2:{s:1:"x";i:2;s:1:"y";s:9:"16.000000";}i:2;a:2:{s:1:"x";i:3;s:1:"y";s:9:"21.560000";}i:3;a:2:{s:1:"x";i:8;s:1:"y";s:9:"34.890000";}i:4;a:2:{s:1:"x";i:28;s:1:"y";s:9:"46.000000";}i:5;a:2:{s:1:"x";i:31;s:1:"y";s:9:"52.220000";}}}i:3;a:4:{s:2:"id";i:235;s:5:"label";s:3:"a68";s:7:"casting";s:11:"21 Jan 2017";s:4:"data";a:4:{i:0;a:2:{s:1:"x";i:2;s:1:"y";s:8:"7.560000";}i:1;a:2:{s:1:"x";i:4;s:1:"y";s:9:"15.560000";}i:2;a:2:{s:1:"x";i:10;s:1:"y";s:9:"23.890000";}i:3;a:2:{s:1:"x";i:28;s:1:"y";s:9:"32.440000";}}}s:3:"age";a:10:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:7;i:5;i:8;i:6;i:10;i:7;i:27;i:8;i:28;i:9;i:31;}}s:3:"35p";a:5:{i:0;a:4:{s:2:"id";i:424;s:5:"label";s:3:"D44";s:7:"casting";s:11:"05 Apr 2017";s:4:"data";a:5:{i:0;a:2:{s:1:"x";i:1;s:1:"y";s:8:"8.670000";}i:1;a:2:{s:1:"x";i:2;s:1:"y";s:8:"9.560000";}i:2;a:2:{s:1:"x";i:3;s:1:"y";s:9:"18.440000";}i:3;a:2:{s:1:"x";i:7;s:1:"y";s:9:"33.110000";}i:4;a:2:{s:1:"x";i:27;s:1:"y";s:9:"40.335000";}}}i:1;a:4:{s:2:"id";i:425;s:5:"label";s:3:"D45";s:7:"casting";s:11:"05 Apr 2017";s:4:"data";a:5:{i:0;a:2:{s:1:"x";i:1;s:1:"y";s:8:"8.890000";}i:1;a:2:{s:1:"x";i:2;s:1:"y";s:9:"19.560000";}i:2;a:2:{s:1:"x";i:3;s:1:"y";s:9:"26.890000";}i:3;a:2:{s:1:"x";i:7;s:1:"y";s:9:"39.780000";}i:4;a:2:{s:1:"x";i:27;s:1:"y";s:9:"49.445000";}}}i:2;a:4:{s:2:"id";i:426;s:5:"label";s:3:"D46";s:7:"casting";s:11:"05 Apr 2017";s:4:"data";a:5:{i:0;a:2:{s:1:"x";i:1;s:1:"y";s:8:"6.670000";}i:1;a:2:{s:1:"x";i:2;s:1:"y";s:9:"16.440000";}i:2;a:2:{s:1:"x";i:3;s:1:"y";s:9:"16.440000";}i:3;a:2:{s:1:"x";i:7;s:1:"y";s:9:"26.670000";}i:4;a:2:{s:1:"x";i:29;s:1:"y";s:9:"40.670000";}}}i:3;a:4:{s:2:"id";i:269;s:5:"label";s:4:"NS23";s:7:"casting";s:11:"01 Feb 2017";s:4:"data";a:3:{i:0;a:2:{s:1:"x";i:1;s:1:"y";s:8:"6.670000";}i:1;a:2:{s:1:"x";i:5;s:1:"y";s:9:"21.780000";}i:2;a:2:{s:1:"x";i:7;s:1:"y";s:9:"26.000000";}}}s:3:"age";a:7:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:5;i:4;i:7;i:5;i:27;i:6;i:29;}}s:3:"45p";a:3:{i:0;a:4:{s:2:"id";i:233;s:5:"label";s:3:"A65";s:7:"casting";s:11:"21 Jan 2017";s:4:"data";a:4:{i:0;a:2:{s:1:"x";i:2;s:1:"y";s:9:"15.110000";}i:1;a:2:{s:1:"x";i:5;s:1:"y";s:9:"32.440000";}i:2;a:2:{s:1:"x";i:10;s:1:"y";s:9:"44.665000";}i:3;a:2:{s:1:"x";i:28;s:1:"y";s:9:"55.483333";}}}i:1;a:4:{s:2:"id";i:234;s:5:"label";s:3:"a66";s:7:"casting";s:11:"21 Jan 2017";s:4:"data";a:4:{i:0;a:2:{s:1:"x";i:2;s:1:"y";s:9:"14.220000";}i:1;a:2:{s:1:"x";i:5;s:1:"y";s:9:"33.780000";}i:2;a:2:{s:1:"x";i:10;s:1:"y";s:9:"44.780000";}i:3;a:2:{s:1:"x";i:28;s:1:"y";s:9:"55.560000";}}}s:3:"age";a:4:{i:0;i:2;i:1;i:5;i:2;i:10;i:3;i:28;}}}
//测试创建HTML
foreach($grade=>$data的图形)
回音“”.strtoupper($grade)。“”;
//开始每个年级的表格
回声';
回声';
回声';
回波“监视器标签”;
对于($i=0;$i
您需要在所有$data[$i]['data']
数组上循环进行计数($data['age']
迭代,但每次检查是否存在出现这种情况的数组。如果存在,则打印['y']
编号,如果没有,则在表列中打印-
或N/A
替换
//test creating HTML
foreach($graph as $grade => $data )
echo '<strong>'.strtoupper($grade).'</strong></br>';
//start the table for each grade
echo '<table border=1>';
echo '<thead>';
echo '<tr>';
echo '<th>Monitor Label</th>';
for($i=0;$i < count($data['age']);$i++)
{
echo '<th>'.$data['age'][$i].'D</th>';
}
echo '</tr>';
echo '</thead>';
echo '<tbody>';
for ($i=0;$i < count($data)-1; $i++)
{
echo '<tr>';
echo '<td>'.$data[$i]['label'].'</td>';
for($j=0;$j < count($data['age']);$j++){
foreach($data[$i]['data'] as $x)
{
if($x['x'] == $data['age'][$j])
echo '<td>'.$x['y'].'</td>';
else
echo '<td> #NA </td>';
}
}
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
}
我四处打听,最终得到了答案和解决方案 基本上,数组被重新排列和简化以获得[x]和[y]值。然后[x]被添加到它自己的数组中。之后,使用[x]作为数组键循环数据以获得[y]值
我已经重新排列了我的数组,简化了这个过程,我的数组用很多空值填充了表格。它确实打印了
NA
,但数据仍然没有正确放置。NA被添加到了表格的末尾。也许我需要重新格式化如何显示数据表啊,哇,我错过了。让我来看看再想一想
//test creating HTML
foreach($graph as $grade => $data )
echo '<strong>'.strtoupper($grade).'</strong></br>';
//start the table for each grade
echo '<table border=1>';
echo '<thead>';
echo '<tr>';
echo '<th>Monitor Label</th>';
for($i=0;$i < count($data['age']);$i++)
{
echo '<th>'.$data['age'][$i].'D</th>';
}
echo '</tr>';
echo '</thead>';
echo '<tbody>';
for ($i=0;$i < count($data)-1; $i++)
{
echo '<tr>';
echo '<td>'.$data[$i]['label'].'</td>';
for($j=0;$j < count($data['age']);$j++){
foreach($data[$i]['data'] as $x)
{
if($x['x'] == $data['age'][$j])
echo '<td>'.$x['y'].'</td>';
else
echo '<td> #NA </td>';
}
}
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
}
foreach($data[$i]['data'] as $x)
{
echo '<td>'.$x['y'].'</td>';
}
for ($y=0; $y < count($data['age']; $y++) {
if ( isset($data[$i]['data'][$y]) ) {
if ( $data[$i]['data'][$y]['x'] == $data['age'][$i] ) {
echo '<td>'.$data[$i]['data'][$y]['y'].'</td>';
} else {
echo '<td>N/A</td>';
}
} else {
echo '<td>N/A</td>';
}
}