我正在使用活动跟踪文件。我想浏览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)
}
}