Php 复杂嵌套循环
我正在尝试用数据库进行数据可视化 起初,我使用morris.js,它对我的数据非常有效。之后我会解释更多。 我现在尝试使用d3.js,因为我必须创建水平堆叠的条形图、多条图表线等等 这是我的桌子: (我没有10个名声,我不能发布我的照片) 我必须在图表上画5条不同的线。“Heure”是x轴,其他列是不同的线 对于morris,我的数据是这样的(r_print在.phpPhp 复杂嵌套循环,php,loops,charts,d3.js,Php,Loops,Charts,D3.js,我正在尝试用数据库进行数据可视化 起初,我使用morris.js,它对我的数据非常有效。之后我会解释更多。 我现在尝试使用d3.js,因为我必须创建水平堆叠的条形图、多条图表线等等 这是我的桌子: (我没有10个名声,我不能发布我的照片) 我必须在图表上画5条不同的线。“Heure”是x轴,其他列是不同的线 对于morris,我的数据是这样的(r_print在.php[{“x”:“1”,“a”:“34”,“b”:“15”,“c”:“49”,“d”:“15”,“e”:“3”}, {“x”:“2”、
[{“x”:“1”,“a”:“34”,“b”:“15”,“c”:“49”,“d”:“15”,“e”:“3”},
{“x”:“2”、“a”:“36”、“b”:“13”、“c”:“49”、“d”:“12”、“e”:“2”},…]
其中x是时间数据(x轴和a-e字母是其他每小时的线点。)
但是在d3.js中,这些数组不再工作了,我需要更改我的php以获得如下内容:
其中每一行都是不同的列
这是我的php:
<?php include 'connexion.php' ?>
<?php
////////////////// out_evo_tat
$requete = $db->prepare('SELECT * FROM out_evo_tat');
$requete->execute();
while($row = $requete->fetch()) {
// $tableau[]=array('x'=>$row['Heure'],'a'=>$row['TAT_CHAINE'],'b'=>$row['TAT_PREA'],'c'=>$row['TAT_GLOBAL'],'d'=>$row['NBR_TESTS'], 'e'=>$row['NBR_TUBES'] );
// $tableau[]=array($row['Heure'],$row['TAT_CHAINE'],$row['TAT_PREA'],$row['TAT_GLOBAL'],$row['NBR_TESTS'], $row['NBR_TUBES'] );
$tableau[]= array (
array($row['Heure'],$row['TAT_CHAINE']),
array($row['Heure'], $row['TAT_PREA']),
array($row['Heure'], $row['TAT_GLOBAL']),
array($row['Heure'], $row['NBR_TESTS']),
array($row['Heure'], $row['NBR_TUBES'])
);
}
echo json_encode($tableau);
?>
我如何修改上面的代码以获得d3.js可用的东西
我想我必须使用嵌套循环,但我不能自己解决它
我试着用最简单的方式解释它,但正如我所解释的,它可能很难理解,所以请不要犹豫,问我更多
谢谢你我认为谷歌有很多API来创建图表。。。
我发现了这个:
PS:我不是PHP程序员……我只知道一点
我认为它将帮助您……一旦您生成了PHP代码中所示的数组,下面将使用该数组生成JSON字符串数组:
array_unshift($tableau, null);
$tableau = call_user_func_array('array_map', $tableau);
$json = array();
foreach ($tableau as $key => $val){
$out = array();
foreach ($val as $key2 => $val2){
$item = new stdClass;
$item->x = $val2[0];
$item->y = $val2[1];
$out[] = $item;
}
$json[] = json_encode($out);
}
print_r($json);
输出:
Array
(
[0] => [{"x":0,"y":35},{"x":1,"y":34},{"x":2,"y":36},{"x":3,"y":35}]
[1] => [{"x":0,"y":10},{"x":1,"y":15},{"x":2,"y":13},{"x":3,"y":15}]
[2] => [{"x":0,"y":45},{"x":1,"y":49},{"x":2,"y":49},{"x":3,"y":50}]
[3] => [{"x":0,"y":10},{"x":1,"y":15},{"x":2,"y":12},{"x":3,"y":5}]
[4] => [{"x":0,"y":2},{"x":1,"y":3},{"x":2,"y":2},{"x":3,"y":1}]
)
谢谢!我一开始怀疑,但这是可行的!但现在我开始了解d3是如何工作的…不客气。代码的前两行做矩阵变换,基本上是将矩阵转向它的一侧。这是处理数组时非常有用的操作。我会记住这一点,非常感谢。你知道d3.js吗?我有更多的问题,肖我可以在这里问他们(因为我使用的是显示的数据)或者我应该创建另一个帖子?@Mathieulyten-我对d3.js一无所知,所以另一个帖子可能是你最好的选择。因为我对d3有问题,我尝试使用另一个图书馆。你对这个选择有什么建议吗?因为我必须创建堆叠条形图和多行图表,我现在正在尝试使用edi,你能帮我吗修改您的代码,使JSON遵循?