每个周期(以秒为单位)索引数组

时间:2009-08-04 12:38:37

标签: php javascript ajax arrays time

我必须每10秒在数组中放置数据。使用修改后的时间戳索引此数组是否愚蠢

$ a [时间戳] = 54; $ a [时间戳+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));

然后,Ajax部分调用此脚本:

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

5 个答案:

答案 0 :(得分: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'];

如果这些操作快速连续发生,您可能会更好地使用microtime

答案 1 :(得分:0)

这似乎是一个非常好的解决方案,但如果脚本将运行很长时间,你必须小心内存使用。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

你可以上课。然后构造设置时间戳,并且使用SPL数组索引和迭代器,它可以在foreach中循环并与某些数组函数一起使用。您可以创建一个方法来获取带或不带时间戳的数组等。

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

答案 4 :(得分:0)

好的,所以我决定每10秒对我的时间戳进行一次计算。简单,愚蠢,为我工作。

感谢你的想法。