2017-03-16 37 views
0

未定义的数字我需要绘制图表谷歌与(行)中的一个不确定数。让我们假设我需要绘制在某一天的两支球队的进球数(团队人数是固定的例子,但它可能是任何人,天数是所有球队一样)。我有这样的阵列:画一个谷歌图用线

Array 
(
    [team1] => Array 
     (
      [0] => Array 
       (
        [day] => 1 
        [goals] => 3 
       ) 

      [1] => Array 
       (
        [day] => 2 
        [goals] => 1 
       ) 

      [2] => Array 
       (
        [day] => 3 
        [goals] => 0 
       ) 
     ) 
    [team2] => Array 
     (
      [0] => Array 
       (
        [day] => 1 
        [goals] => 1 
       ) 

      [1] => Array 
       (
        [day] => 2 
        [goals] => 2 
       ) 

      [2] => Array 
       (
        [day] => 3 
        [goals] => 4 
       ) 
     ) 
) 

我试图建立这个循环:

$resultArray = array(); 
    $resultArray['cols'][] = array('label' => "Day", 'type' => 'string'); 
    // $array is the one shown before 
    foreach($array as $key => $chartData){ 
     $resultArray['cols'][] = array('label' => $key, 'type' => 'number'); 
     foreach($chartData as $data){ 
      $resultArray['rows'][] = array('c' => array(array('v' => $data['day']), array('v' => $data['goals']))); 
     } 
    } 

的问题是,该图表仅绘制与从两个队数据的一个线连接一起,而不是两行一个用于各组。

我真的很感激任何帮助。

回答

1

我觉得你使用谷歌图表数据关联数组使其难以自己。你的阵列的数据结构也增加了循环的一些挑战使得它更有点挑战来获取数据出所需的格式:

$chartData = array(); 
$chartData[] = array("Day"); 
foreach($array as $key => $a){ 
    $chartData[0][] = $key; 
    for($i = 0; $i < count($a); $i++){ 
    if(!is_array($chartData[$i+1])){ 
     $chartData[$i+1] = array(); 
     $chartData[$i+1][] = $a[$i]['day']; 
    } 
    $chartData[$i+1][count($chartData[0])-1] = $a[$i]['goals']; 
    } 
} 

这应该给你你需要有所需的图表格式数据表:

[ 
    ["Day","team1","team2"] 
    [1,3,1] 
    [2,1,2] 
    [3,0,4] 
] 

在天数(x轴)上为每个球队创建一条目标数(y轴)的线。希望这有助于

+0

谢谢@ M31是的,它似乎我变得更困难通过创建一个类型的数组,但你的解决方案,我终于解决了,唯一的问题是用'is_array'检查,它提供了一个'未定义offset'错误。我通过在之前添加'isset'检查来解决这个问题,并且在未设置的情况下初始化数组位置。 –