php数组处理

T陈震 发布于 09/05 14:52
阅读 219
收藏 0
PHP

怎么把type_id重复的项去掉,只取第一个

加载中
0
李虎头
李虎头

array_filter   详细用法看文档

0
乱世之牙

有个简单点的法子,可以把type_id作为数组中元素的Key(索引),这样同一个type_id的会将值覆盖掉,就能取到最后一个了。

变通一下就是先把数组倒序,然后按照上面的办法,通过遍历,把type_id作为数组中元素的Key(索引),就能够得到相同type_id的第一个了

0
tcxu
tcxu

1.   楼主所说的"type_id重复的项", 是指以 type_id 为索引的元素值"连续相同"的项吗?就是说, type_id 索引值相同的元素必须 "相邻"。 若果真如此,下列代码中的函数 filter($a , $index)  可以胜任这项任务。

<?php
$arr = array(
	0 => array(
	'id' => 7651,
	'agentsId' => 7642,
	'loginId' => "韦平羡",
	'type_id' => 5,
		),
    1 => array(
	'id' => 7652,
	'agentsId' => 7639,
	'loginId' => "兰柏生",
	'type_id' => 5,
	),
   2 => Array(
	'id' => 7639,
	'agentsId' => 8005,
	'loginId' => "廖志干",
	'type_id' => 5,
	),
   3 => Array(
	'id' => 8005,
	'agentsId' => -1,
	'loginId' => "阳厚勤",
	'type_id' => 2,
	)
);
function filter($a , $index){ #定义函数 filter
$b=array();
$id = -1;
for($i=0; $i<sizeof($a); $i++)
	if ($id != $a[$i][$index]){
		$id = $a[$i][$index];
		$b[]=$a[$i];
	}
	return $b;
}
$result = filter($arr,'type_id'); #调用 filter 函数
# 输出结果	 
for($i=0; $i<sizeof($result); $i++) 
	foreach( $result[$i] as $key => $value)
	 echo $key.' => '.$value.'<br>'; 	
?>

输出:

id => 7651
agentsId => 7642
loginId => 韦平羡
type_id => 5
id => 8005
agentsId => -1
loginId => 阳厚勤
type_id => 2

2.   如果所谓的"type_id重复的项", 可以不相邻, 那就要采用类似楼下 jacky-zhuo 所提出的思路。函数 filter1($arr, $index)  亦可用于 第 1 种情况。

<?php

function filter1($arr, $index){
$newArray = array();
foreach ($arr as $val) {
    if (isset($newArray[$val[$index]])) 
        continue;
    $newArray[$val[$index]] = $val;
}
return $newArray;
}

$arr = array(
	0 => array(
	'id' => 7651,
	'agentsId' => 7642,
	'loginId' => "韦平羡",
	'type_id' => 5,
		),
    
    1 => Array(
	'id' => 7639,
	'agentsId' => 8005,
	'loginId' => "廖志干",
	'type_id' => 5,
	),
   2 => Array(
	'id' => 8005,
	'agentsId' => -1,
	'loginId' => "阳厚勤",
	'type_id' => 2,
	),
	3 => array(
	'id' => 7652,
	'agentsId' => 7639,
	'loginId' => "兰柏生",
	'type_id' => 5,
	)
);

$resultArray =filter1($arr, "type_id");
foreach( $resultArray as $key => $value)
	foreach($value as $key => $value )
		echo $key."=>".$value."<br>";	
?>

输出:

id=>7651
agentsId=>7642
loginId=>韦平羡
type_id=>5
id=>8005
agentsId=>-1
loginId=>阳厚勤
type_id=>2

 

0
jacky-zhuo
jacky-zhuo
<?php

$newArray = [];

foreach ($arr as $val) {
    if (isset($newArray[$val['type_id']])) {
        continue;
    }

    $newArray[$val['type_id']] = $val;
}

$newArray = array_values($newArray);

 

返回顶部
顶部