2015-10-05 42 views
0

在數據庫表我在其中有超過50行age列。我怎麼能執行所有行中的JavaScript

id age 

1 45 

2 41 

3 09 

...... 

60 11 

我總是有在陣列10樓的鍵,

<?php 
    $arr = array(0,0,0,0,0,0,0,0,0); 
    echo json_encode($arr)."<br>";  
    $con = mysqli_connect('127.0.0.1','app_user2','qwe123','test'); 
    $select="select age from ad;"; 
    $res = mysqli_query($con, $select);      
    while ($row=$res->fetch_assoc()) { 
     $arr=array_slice($arr,1,9); 
     //$arr[]=$row['id']; 
     $arr[]=array($i++, (int)$row['age']); 
     echo json_encode($arr)."<br>"; 
    } 
?> 

我得到以下輸出=>

[0,0,0,0,0,0,0,0,0,[0,45]] 

[0,0,0,0,0,0,0,0,[0,45],[1,41]] 

[0,0,0,0,0,0,0,[0,45],[1,41],[2,11]] 

[0,0,0,0,0,0,[0,45],[1,41],[2,11],[3,21]] 

[0,0,0,0,0,[0,45],[1,41],[2,11],[3,21],[4,44]] 

............................. 
[[1,41],[2,11],[3,21],[4,44],[5,13],[6,15],[7,12],[8,7],[9,14],[10,11]] 

........................ 

現在,當我執行

回波json_encode( $ arr)

在JavaScript中我越來越只剩下最後10個值。我想要逐一執行所有的行。我怎樣才能做到這一點?有可能嗎?請幫忙。

這裏是我的script code

<script type="text/javascript"> 
    var data=[]; 
    data=<?php echo json_encode($arr); ?>; 
    document.write(data); 
</script> 
+1

surrountd與報價,'數據= 「」;' –

回答

1

那是因爲你的字符串不是一個有效的JSON格式。然後你得到只有一行的輸出。您可以考慮建立一個類似正確的方法:

$myArray = [] 
while ($row=$res->fetch_assoc()) { 
    $arr=array_slice($arr,1,9); 
    //$arr[]=$row['id']; 
    $arr[]=array($i++, (int)$row['age']); 
    array_push($myArray, $arr); 
} 

則:

data=<?php echo json_encode($myArray); ?>; 

(PS:在JavaScript中硬編碼服務器端代碼是不是一個好的做法)

0

在每次運行通過循環,您使用array_slice分配$arr併爲其分配9個元素(從元素1開始,長度爲9)。稍後在循環迭代中,您將使用$arr[] = ...賦值將新元素添加到數組的末尾。

由於您將數組分配爲具有9個元素,然後在每次迭代中添加1個元素,它總是最多隻有10個元素,並且不會再有更多。

相關問題