Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 复杂嵌套循环_Php_Loops_Charts_D3.js - Fatal编程技术网

Php 复杂嵌套循环

Php 复杂嵌套循环,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”、

我正在尝试用数据库进行数据可视化

起初,我使用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”、“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遵循?