在数据库表中,我的年龄列超过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]]
........................
现在我执行
在JavaScript中echo json_encode($ arr)
我只得到最后10个值。我想逐个执行所有行。我怎样才能做到这一点?有可能吗?请帮忙。
这是我的script code
<script type="text/javascript">
var data=[];
data=<?php echo json_encode($arr); ?>;
document.write(data);
</script>
答案 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个元素,而不会更多。