2009-08-04 73 views
4

我必须每10秒将数据放入一个数组中。这是愚蠢的索引这个数组与修改时间戳每个循环索引一个数组(以秒为单位)

$ a [timestamp] = 54; $ a [timestamp + 10] = 34;

或在Javascript中使用setInterval()并通过Ajax传递索引(对我来说很糟糕)?

还是我有最好的选择?

进一步了解详细:

  • 我必须实时在我的数组条目链接:这是我的问题。在第3个周期(从开始时间起21秒到30秒)。
  • 我只有15个条目来存储。
  • 我的现在的代码:

    $ first_time =(int)date('Hi'); $ _SESSION ['mypile'] [$ first_time] = array_fill($ first_time,15,array('paramA'=> 0,'paramB'=> 0));

随后,阿贾克斯部分调用该脚本:

$time = (int)date('Hi'); 
$_SESSION['mypile'][$time]['paramA'] = calcul_temp($_SESSION['mypile'], $time); 

回答

0

好了,所以我决定圆我的时间戳每10秒有碎片时间。简单,愚蠢,为我工作。

谢谢你的想法。

2

为什么你会不使用普通的数字索引数组吗?如果你不需要时间戳,则:

$a[] = 54; 

$a[] = 34; 

如果你确实需要的时间戳,那就更有意义,这样做:

$a[] = array('timestamp' => time(), 'number' => 54); 

$a[] = array('timestamp' => time(), 'number' => 34); 

然后在每个偏移你有一个更有意义的关联数组:

echo 'Timestamp: ' . $a[0]['timestamp'] . ', Number: ' . $a[0]['number']; 

如果这些业务在快速连续发生,你很可能会利用更好

+0

为什么这会更有意义?为什么不用时间索引? – 2009-08-04 12:53:59

+0

就像我添加的,我需要将当前时间戳链接到我的数组。 也许我会在Javascript中做到这一点...... – 2009-08-04 12:55:44

+0

这样做可行,但如果它是普通数组,则遍历更有趣。 – karim79 2009-08-04 12:55:55

0

这似乎是一个非常好的解决方案,但如果脚本将长时间运行,您将不得不小心内存使用情况。

+0

好吧,我应该更具体一些,我只有15个值。 – 2009-08-04 12:45:19

0

这相当愚蠢;如果您设置了时间间隔,只需每10秒调用一次您的函数,并将您的新数字添加到数组中的下一个索引。在全球范围内或在迭代范围内跟踪此索引。

0
$a['timestamp'] = time(); 
while (true) { 
    $a['data'][] = getData(); 
    sleep(10); 
} 

您可以创建一个类。然后,该构造设置时间戳,并使用SPL数组索引和迭代器,它可以在foreach中循环使用并用于某些数组函数。你可以做一个方法来获得一个数组有或没有时间戳等

$dataCycle = new DataCycle(); 
while(true) { 
    $dataCycle->addData(getData()); 
    sleep(10); 
} 
相关问题