首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >php中基于速度的多维数组过滤

php中基于速度的多维数组过滤
EN

Stack Overflow用户
提问于 2020-12-16 01:33:28
回答 1查看 40关注 0票数 2

在从数组中过滤数据时,我遇到了一个问题。我的数组如下所示:

代码语言:javascript
运行
复制
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)的位置,依此类推。我的异常输出如下所示:

代码语言:javascript
运行
复制
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
            )

    )
 )

我已经开始了下面的代码

代码语言:javascript
运行
复制
 foreach($locations as $lkey=> $location){
        if($location['speed'] >0){
            
        }
    }

有没有人能帮我解决这个问题,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-16 02:17:01

您可以收集所有大于0的中间数组,如果找到0,则将0添加到中间结果中,将其推送到最终结果中,并清空中间临时数组,如下所示:

代码语言:javascript
运行
复制
<?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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65310837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档