从数据库中获取数据并移动并在数组中添加新值
Fetch data from database and shift and add new value in an array
在数据库 table 中,我的值 column.Have 超过 50 行。现在在 php 中,我有一个 10 的固定数组。首先将从数据库中获取 10 行并存储到数组中。当数组满时,第 11 个值将尝试插入到数组中,第 0 个值将移动,第 11 个值将插入到数组中。比如像QUEUE进程。
一开始会显示
[[0,17.9999],[1,13.898],...[9,16.98]]
然后 [0,17.9999] will move and [10,11.88]
将插入并打印如下
[[1,13.898],.......[9,16.98],[10,11.88]]
然后
[2,17.84],......[10,11.88],[11,999]]
等等..
如何在 php 中表示它?
这是我的代码:
<?php
include("md.php");
$sql = "SELECT * from datatable";
$result =oci_parse($conn, $sql);
$r=oci_execute($result);
$arr = array();
$i=0;
while($row = oci_fetch_array($stid,OCI_ASSOC)){
$arr[] = array_shift(array($i++, (float)$row['VALUE']));
}
echo json_encode($arr);
?>
请帮忙。
如果数组中总是有 10 个键,请尝试
$arr=array_slice($arr,1,9);
$arr[]=$row['VALUE'];
改为
$arr[] = array_shift(array($i++, (float)$row['VALUE']));
注意,当您已经拥有包含 10 个项目的数组时,这将是正确的。
请参阅下面的示例
$arr = array(1,2,3,4,5,6,7,8,9,10);
echo json_encode($arr)."<br>";
$con = mysqli_connect('127.0.0.1','app_user2','qwe123','test');
$select="select id from adv where id > 300 and id < 312;";
$res = mysqli_query($con, $select);
while ($row=$res->fetch_assoc()) {
$arr=array_slice($arr,1,9);
$arr[]=$row['id'];
echo json_encode($arr)."<br>";
}
在浏览器中它会表示为
[1,2,3,4,5,6,7,8,9,10]
[2,3,4,5,6,7,8,9,10,"301"]
[3,4,5,6,7,8, 9,10,"301","302"]
[4,5,6,7,8,9,10,"301","302","303"]
[5,6,7,8,9,10,"301","302","303","304"]
[6,7,8,9,10,"301","302","303","304","305"]
[7,8,9,10,"301","302","303","304","305","306"]
[8,9,10,"301","302","303","304","305","306","307"]
[9,10,"301","302","303","304","305","306","307","308"]
[10,"301","302","303","304","305","306","307","308","309"]
["301","302","303","304","305","306","307","308","309","310"]
["302","303","304","305","306","307","308","309","310","311"]
如果我理解,在 50 个条目中你只会得到 10 个,而第 11 个正在推开数组的第一个值......这就像得到最后 10 个结果,你不觉得吗?
承认您的 table 有一个自动递增的 'id' 字段:
<?php
include("md.php");
// I've changed your SQL query by adding a reverse sort
// on the 'id' field and put a limit of 10 entries
$sql = "SELECT * from datatable ORDER BY id DESC LIMIT 0,10";
$result =oci_parse($conn, $sql);
$r=oci_execute($result);
$arr = array();
$i=0;
while($row = oci_fetch_array($stid, OCI_ASSOC)){
$arr[] = (float)$row['VALUE'];
}
echo json_encode($arr);
?>
我还没有测试过这段代码,但它应该可以正常工作;)
编辑:如果 Ilya 的回答是您想要做的,请忽略 D:
在数据库 table 中,我的值 column.Have 超过 50 行。现在在 php 中,我有一个 10 的固定数组。首先将从数据库中获取 10 行并存储到数组中。当数组满时,第 11 个值将尝试插入到数组中,第 0 个值将移动,第 11 个值将插入到数组中。比如像QUEUE进程。
一开始会显示
[[0,17.9999],[1,13.898],...[9,16.98]]
然后 [0,17.9999] will move and [10,11.88]
将插入并打印如下
[[1,13.898],.......[9,16.98],[10,11.88]]
然后
[2,17.84],......[10,11.88],[11,999]]
等等..
如何在 php 中表示它?
这是我的代码:
<?php
include("md.php");
$sql = "SELECT * from datatable";
$result =oci_parse($conn, $sql);
$r=oci_execute($result);
$arr = array();
$i=0;
while($row = oci_fetch_array($stid,OCI_ASSOC)){
$arr[] = array_shift(array($i++, (float)$row['VALUE']));
}
echo json_encode($arr);
?>
请帮忙。
如果数组中总是有 10 个键,请尝试
$arr=array_slice($arr,1,9);
$arr[]=$row['VALUE'];
改为
$arr[] = array_shift(array($i++, (float)$row['VALUE']));
注意,当您已经拥有包含 10 个项目的数组时,这将是正确的。 请参阅下面的示例
$arr = array(1,2,3,4,5,6,7,8,9,10);
echo json_encode($arr)."<br>";
$con = mysqli_connect('127.0.0.1','app_user2','qwe123','test');
$select="select id from adv where id > 300 and id < 312;";
$res = mysqli_query($con, $select);
while ($row=$res->fetch_assoc()) {
$arr=array_slice($arr,1,9);
$arr[]=$row['id'];
echo json_encode($arr)."<br>";
}
在浏览器中它会表示为
[1,2,3,4,5,6,7,8,9,10]
[2,3,4,5,6,7,8,9,10,"301"]
[3,4,5,6,7,8, 9,10,"301","302"]
[4,5,6,7,8,9,10,"301","302","303"]
[5,6,7,8,9,10,"301","302","303","304"]
[6,7,8,9,10,"301","302","303","304","305"]
[7,8,9,10,"301","302","303","304","305","306"]
[8,9,10,"301","302","303","304","305","306","307"]
[9,10,"301","302","303","304","305","306","307","308"]
[10,"301","302","303","304","305","306","307","308","309"]
["301","302","303","304","305","306","307","308","309","310"]
["302","303","304","305","306","307","308","309","310","311"]
如果我理解,在 50 个条目中你只会得到 10 个,而第 11 个正在推开数组的第一个值......这就像得到最后 10 个结果,你不觉得吗?
承认您的 table 有一个自动递增的 'id' 字段:
<?php
include("md.php");
// I've changed your SQL query by adding a reverse sort
// on the 'id' field and put a limit of 10 entries
$sql = "SELECT * from datatable ORDER BY id DESC LIMIT 0,10";
$result =oci_parse($conn, $sql);
$r=oci_execute($result);
$arr = array();
$i=0;
while($row = oci_fetch_array($stid, OCI_ASSOC)){
$arr[] = (float)$row['VALUE'];
}
echo json_encode($arr);
?>
我还没有测试过这段代码,但它应该可以正常工作;)
编辑:如果 Ilya 的回答是您想要做的,请忽略 D: