2014-11-04 182 views
0

當試圖在的foreach在使用json_encode從陣列()中的數據移動到下一個值,例如:json_encode返回下一行中的值 - PHP PDO SQL HighCharts

我已被從未來此表相同的查詢+ PHP:

使用json_encode時,試圖在以highcharts適合這個表中的數據Table

,我的結果是這樣的:

[{"name":"User1","data":[0,2,0,0]},{"name":"User2","data":[0,2,0,0,2,0,2,4]}] 

所以它的移動用戶1的數據到用戶2的

我期望的結果將是:

[{"name":"User1","data":[0,2,0,0]},{"name":"User2","data":[2,0,2,4]}] 

這是我的代碼:

$uniqueHours = array(); 
$series = array(); 
$data = array(); 

foreach ($pdo->query("SELECT DATEPART(HOUR, AL.EndDateTime) AS 'EndHour' 
        FROM ActivityLog AL 
        WHERE 
        ".$where." 
        ORDER BY AL.EndDateTime, 'EndHour' DESC") as $row) 
{ 

    if (in_array($row['EndHour'], $uniqueHours)) { 
     continue; 
    } 
    $uniqueHours[] = $row['EndHour']; 
} 

$ODsql = "SELECT * FROM Users"; 
foreach ($pdo->query($ODsql) as $row) 
{ 

    echo '<tr>'; 

    $SCardNumber = $row['CardNumber']; 
    $SEmployeeName = $row['Username']; 

    echo '<td>'.$SEmployeeName.'</td>'; 

    $chartValues = ""; 

    foreach($uniqueHours as $hour) 
    { 

     $countSQL= $pdo->prepare("SELECT DISTINCT(COUNT(AL.TerminalNumber)) AS TOTALS 
       FROM ActivityLog AL, WavePick WP 
       WHERE AL.TransactionType = 'SPK' AND WP.PickedQty > 0 
       AND DATEPART(HOUR, AL.EndDateTime) = ".$hour." 
       AND AL.StartDateTime >= '".$StartDate." 00:00:00.000' AND AL.EndDateTime <= '".$StartDate." 23:59:59.000' 
       AND AL.OrderNumber = WP.OrderNumber 
       AND AL.CardNumber = '".$SCardNumber."' 
       "); 
     $countSQL->execute(); 
     $result = $countSQL->fetch(PDO::FETCH_OBJ); 
     $row_count = $result->TOTALS; 
     $totals[] = $result->TOTALS; 

     echo '<td>'.$row_count.'</td>'; 


    } 

    echo '</tr>'; 

    $series['name'] = $SEmployeeName; 
    $series['data'] = $totals; 
    array_push($data,$series); 

} 

我還沒有真正把這個給圖表但因爲數據無效。 我使用這個返回的結果:

  echo "<div class='well'>"; 
print json_encode($results, JSON_NUMERIC_CHECK); 
echo "</div>"; 

我怎樣才能讓這個數據僅顯示它與每個用戶?

回答

1

這個循環之前:

foreach($uniqueHours as $hour) 

空$總陣列

$total=array(); 
foreach($uniqueHours as $hour)