php二维数组去重

方法一:
       /**
	 * 传入参数:$array二维数组, $unique唯一码
	 * 二维数组去重, 
	 * 传出: 二维数组
	 */
	public function array_unique($array, $unique) 
	{
		$out = array();
		$uni = array();

        foreach ($array as $value) 
        {
        	if (is_array($value))
			{
				if (count($out) > 0)
				{
					foreach ($out as $row) 
	           		{
	           			$uni[count($uni)] = $row[$unique];
	           		}
				}	
           		if (!in_array($value[$unique], $uni)) 
           		{
         			$out[count($out)] = $value;
           		}
       		}
   		}
   		return $out;
	}

方法二:

/**
	 * 传入参数:$array二维数组, $unique唯一码
	 * 二维数组去重, 
	 * 传出: 二维数组
	 */
	public function array_unique_pro($array, $unique) { 
		// 二维数组$unique
		$arr = array();
		// 指定值去重
		$uni = array();
		// 去重后的二维数组
		$out = array();
		// 取出指定的唯一值
		foreach ($array as $key => $value) {
			$arr[$key] = $value[$unique]; 
		}
		// 唯一值去重
		foreach ($arr as $key => $value) {
			if (!in_array($value, $uni)) {
				$uni[$key] = $value;
			}
		}
		// 生成去重后的二维数组
		foreach ($uni as $key => $value) {
			if (!in_array($value, $out)) {
				$out[count($out)] = $array[$key];
			}
		}
		return $out;
	}
例如:
function test() {
	$arr = array(
		"0" => array(
			"id"=>1,
			"name"=>"dash"
		),
		"1" => array(
			"id"=>2,
			"name"=>"asd"
		),
		"2" => array(
			"id"=>3,
			"name"=>"df"
		),
		"3" => array(
			"id"=>4,
			"name"=>"dash"
		)
	);
	$pro = $this->array_unique($arr, "name");//去除name中的重复值
}


你可能感兴趣的:(PHP,array,去重,unique)