2015-09-26 54 views
0

在数据库表中我有Value列。有超过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); 
?> 

请帮助。

+0

这一切的目的是什么?取最后10条记录? –

回答

0

如果你总是在阵列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"] 
0

如果我的理解,对50个条目,你只会得到10,11日被推开数组的第一个值......这就像是最后的10次结局,你不觉得吗?

通过承认你的表有一个自动递增的“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); 
?> 

我没有测试过这个片段,但它应该很好地工作;)

编辑:请忽略,如果伊利亚的答案就是你想要做的D:

相关问题