2015-10-05 46 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个元素,并且不会再有更多。