循环遍历一个整数数组并每 1000 个中断一次

Loop through an array of integers and break every 1000

我正在使用 activity 跟踪文件。我想浏览一个 GPX 文件并为每 1000 米里程碑做一些事情。但是该设备不一定会在 1000 米、2000 米等处记录 GPS 轨迹,所以我不能使用 $distance % 1000 之类的东西。我想要的是在每次经过 1000 米里程碑时进行检测,方法是在里程碑之后执行一个操作。

这是跟踪距离的示例:

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

等等。在此示例中,我需要在达到 1003 时执行操作,然后是 2006 和 3001。

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

如果你想把一个大数组拆分成小数组,每个数组大小相同,你可以使用array_chunk function:

$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)
  }
}

如果您的数据以字符串形式出现,那么您可以通过分隔符分解字符串,然后将其循环。

<?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