如何在javascript中执行所有行

时间:2015-10-05 15:00:59

标签: javascript php arrays

在数据库表中,我的年龄列超过50行。

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>";
   }
?>

我正在关注output =&gt;

[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]]

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

现在我执行

  

echo json_encode($ arr)

在JavaScript中

我只得到最后10个值。我想逐个执行所有行。我怎样才能做到这一点?有可能吗?请帮忙。

这是我的script code

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

2 个答案:

答案 0 :(得分: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中的硬编码服务器端代码不是一个好习惯)

答案 1 :(得分:0)

在每次循环运行时,使用$arr指定array_slice并为其分配9个元素(从元素1开始,长度为9)。稍后在循环迭代中,使用$arr[] = ...赋值将新元素添加到数组的末尾。

由于您要将数组赋值为9个元素,然后在每次迭代时添加1个元素,因此它最终总是最多为10个元素,而不会更多。