从多维php数组中删除重复项 [英] Removing duplicates entries from a multidimensional php array

查看:89
本文介绍了从多维php数组中删除重复项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个下面的数组结构,我该如何处理它以便除去所有连续出现的change_status。请查看下面的数组,然后查看我要实现的功能。

I have a the following array structure how can I process it in such a way so as to remove all the successive occurrences of change_status. Please see the array below and then what I want to achieve.

$a=array( 
    "0" => array(  "status_change" => "start", "clock_status" => "1" ),
    "1" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "2" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "3" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "4" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "5" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "6" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "7" => array(  "status_change" => "start", "clock_status" => "1" ),
    "8" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "9" => array(  "status_change" => "start", "clock_status" => "1" ),
    "10" => array(  "status_change" => "start", "clock_status" => "1" ),
    "11" => array(  "status_change" => "start", "clock_status" => "1" ),
    "12" => array(  "status_change" => "start", "clock_status" => "1" )
    );

在处理完上面的数组后,我希望得到以下

After processing the above array I would like to have the following

$a=array( 
    "0" => array(  "status_change" => "start", "clock_status" => "1" ),
    "1" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "7" => array(  "status_change" => "start", "clock_status" => "1" ),
    "8" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "9" => array(  "status_change" => "start", "clock_status" => "1" )
    );

任何想法都会受到赞赏。我确实有处理一维数组的代码,但这使我感到困惑,在处理数组时我有点慢。

Any ideas will be appreciated. I do have a code that deals with the one dimensional array but this one is confusing me and I am a bit slow when dealing with the arrays.

推荐答案

请检查以下代码

$source=array( 
    "0" => array(  "status_change" => "start", "clock_status" => "1" ),
    "1" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "2" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "3" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "4" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "5" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "6" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "7" => array(  "status_change" => "start", "clock_status" => "1" ),
    "8" => array(  "status_change" => "stop", "clock_status" => "2" ),
    "9" => array(  "status_change" => "start", "clock_status" => "1" ),
    "10" => array(  "status_change" => "start", "clock_status" => "1" ),
    "11" => array(  "status_change" => "start", "clock_status" => "1" ),
    "12" => array(  "status_change" => "start", "clock_status" => "1" )
    );

function reduce_successive(&$source) {      
    $prev_status = 'none';
    foreach($source as $key=>$item) {
        if($item['status_change'] == $prev_status) {
            unset($source[$key]);
        } else {
            $prev_status = $item['status_change'];
        }
    }
}
reduce_successive($source);
var_dump( $source );

这篇关于从多维php数组中删除重复项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆