循环遍历一个整数数组并每 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
我正在使用 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