循环一个整数数组,每1000次中断一次


Loop through an array of integers and break every 1000

我正在使用活动跟踪文件。我想浏览GPX文件,并为每1000米里程碑做点什么。但该设备不一定会在1000米,2000米等位置记录GPS跟踪,所以我不能使用$distance % 1000之类的东西。我想要的是通过在里程碑上执行一个动作来检测每次通过1000m里程碑。

下面是一个跟踪距离的例子:

0  
3  
28 
…  
997  
1003  
1027  
…  
1998  
2006
…  
2989  
3001

等等。在本例中,我需要在到达1003时执行一个操作,然后是2006,然后是3001。

如何在每次数据通过1000的倍数时触发事件?

如果你的数据是一个字符串,那么你可以用任何分隔符将字符串展开,然后循环它。

<?php
$string = "0 3 28 36 42 66 73 80 103 125 997 1003 1027 2006 3001";
$data= explode( ' ', $string );
$multiple = 1;
foreach( $data as $value )
{
  if( (int)$value > ( 1000 * $multiple ) ) 
  {
    // Passed a 1000 marker
    echo $value."'n";
    $multiple++;
  }
}
输出:

1003
2006
3001

如果您想将一个大数组分割成大小相同的小数组,您可以使用array_chunk函数:

$ar = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var_dump(array_chunk($ar, 2));
输出:

array(5) {
  [0]=>
  array(2) {
    [0]=>
    int(1)
    [1]=>
    int(2)
  }
  [1]=>
  array(2) {
    [0]=>
    int(3)
    [1]=>
    int(4)
  }
  [2]=>
  array(2) {
    [0]=>
    int(5)
    [1]=>
    int(6)
  }
  [3]=>
  array(2) {
    [0]=>
    int(7)
    [1]=>
    int(8)
  }
  [4]=>
  array(1) {
    [0]=>
    int(9)
  }
}