2015-09-26 53 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:

相關問題