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

Php 每个周期索引一个数组(以秒为单位),php,javascript,ajax,arrays,time,Php,Javascript,Ajax,Arrays,Time,我必须每10秒将数据放入一个数组中。用修改过的时间戳索引此数组是否愚蠢 $a[时间戳]=54; $a[时间戳+10]=34 或者在Javascript中使用setInterval()并通过Ajax传递索引(对我来说非常糟糕) 还是我有最好的选择 进一步详情: 我必须将实时数据与数组中的条目链接起来:这是我的问题。在第三个循环时(从开始时间算起21秒到30秒) 我只有15个条目要存储 我现在的代码是: $first_time=(int)日期('Hi'); $\会话['mypile'][$firs

我必须每10秒将数据放入一个数组中。用修改过的时间戳索引此数组是否愚蠢

$a[时间戳]=54; $a[时间戳+10]=34

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

还是我有最好的选择

进一步详情:

  • 我必须将实时数据与数组中的条目链接起来:这是我的问题。在第三个循环时(从开始时间算起21秒到30秒)
  • 我只有15个条目要存储
  • 我现在的代码是:

    $first_time=(int)日期('Hi'); $\会话['mypile'][$first\u time]=数组填充($first\u time,15,array('paramA'=>0,'paramB'=>0))

然后,Ajax部分调用以下脚本:

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

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

$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'];

如果这些操作连续快速进行,您可能会更好地使用这似乎是一个非常好的解决方案,尽管如果脚本将运行很长时间,您必须小心内存使用。

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

$a['timestamp'] = time();
while (true) { 
  $a['data'][] = getData(); 
  sleep(10); 
}
你可以把它变成一门课。然后该构造设置时间戳,通过SPL数组索引和迭代器,它可以在foreach中循环,并与一些数组函数一起使用。您可以创建一个方法来获取带有或不带时间戳的数组,等等

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

好的,所以我决定每10秒取整一次我的时间戳,以获得时间片段。简单,愚蠢,为我工作


谢谢你的建议。

如果他需要记录时间戳怎么办?如果是这样,这是一个很好的方法。每10秒,15次,然后停止。我也有这个想法,就像karim79说的:让PHP索引数组,每10秒调用一次我的PHP ajax。是的,这正是你应该做的。好吧,我应该更具体一些,我只有15个值要保留。为什么这更有意义?为什么不使用时间索引呢?正如我添加的,我需要将当前时间戳链接到我的数组。也许我会用Javascript来做这件事……这确实有效,但是如果是一个普通数组,遍历就更有趣了。我想让我的系统尽可能简单,它是一个POC。