从多维php数组中删除重复项 [英] Removing duplicates entries from a multidimensional php array
本文介绍了从多维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屋!
查看全文