在从数组中过滤数据时,我遇到了一个问题。我的数组如下所示:
Array
(
[0] => Array
(
[id] => 109729
[address] => Panipat, Haryana, IN
[speed] => 0
)
[1] => Array
(
[id] => 109730
[address] => Panipat, Haryana, IN
[speed] => 5.55
)
[2] => Array
(
[id] => 109731
[address] => Panipat, Haryana, IN
[speed] => 6.555
)
[3] => Array
(
[id] => 109732
[address] => Panipat, Haryana, IN
[speed] => 0
)
[4] => Array
(
[id] => 109733
[address] => Panipat, Haryana, IN
[speed] => 0
)
[5] => Array
(
[id] => 109734
[address] => Panipat, Haryana, IN
[speed] => 2.5
)
[6] => Array
(
[id] => 109735
[address] => Panipat, Haryana, IN
[speed] => 4.5
)
[7] => Array
(
[id] => 109736
[address] => Panipat, Haryana, IN
[speed] => 10
)
[8] => Array
(
[id] => 109737
[address] => Panipat, Haryana, IN
[speed] => 0
)
)我想在多个数组中过滤结果,比如当速度(>0)和速度之间为0时,添加最后一个位置和中断,并再次从数组开始查找速度(>0)的位置,依此类推。我的异常输出如下所示:
Array
(
[0] => Array
(
[0] => Array
(
[id] => 109730
[address] => Panipat, Haryana, IN
[speed] => 5.55
)
[1] => Array
(
[id] => 109731
[address] => Panipat, Haryana, IN
[speed] => 6.555
)
[2] => Array
(
[id] => 109732
[address] => Panipat, Haryana, IN
[speed] => 0
)
)
[1] => Array
(
[0] => Array
(
[id] => 109734
[address] => Panipat, Haryana, IN
[speed] => 2.5
)
[1] => Array
(
[id] => 109735
[address] => Panipat, Haryana, IN
[speed] => 4.5
)
[2] => Array
(
[id] => 109736
[address] => Panipat, Haryana, IN
[speed] => 10
)
[3] => Array
(
[id] => 109737
[address] => Panipat, Haryana, IN
[speed] => 0
)
)
)我已经开始了下面的代码
foreach($locations as $lkey=> $location){
if($location['speed'] >0){
}
}有没有人能帮我解决这个问题,谢谢。
发布于 2020-12-16 02:17:01
您可以收集所有大于0的中间数组,如果找到0,则将0添加到中间结果中,将其推送到最终结果中,并清空中间临时数组,如下所示:
<?php
$result = [];
$temp = [];
foreach($locations as $lkey => $location){
$temp[] = $location;
if($location['speed'] == 0){
if(count($temp) > 1){ // meaning this batch has at least 1 entry with speed > 0
$result[] = $temp;
}
$temp = [];
}
}
if(count($temp) > 0){
$result[] = $temp;
$temp = [];
}
print_r($result);https://stackoverflow.com/questions/65310837
复制相似问题