Массив - поиск, подсчет и удаление дубликатов

frundik

Новичок
Добрый день!
Помогите, пожалуйста!

Задача такова, есть массив такого типа:
PHP:
$mas[0][0]='1';
$mas[0][1]='1';
$mas[0][2]='1';

$mas[1][0]='2';
$mas[1][1]='2';
$mas[1][2]='2';

$mas[2][0]='1';
$mas[2][1]='1';
$mas[2][2]='1';

$mas[3][0]='3';
$mas[3][1]='3';
$mas[3][2]='3';

$mas[4][0]='1';
$mas[4][1]='1';
$mas[4][2]='1';
необходимо перебраться массив, найти и посчитать повторения (полное совпадение $mas[$i][0],$mas[$i][1] и $mas[$i][3] и вернуть новый массив типа

PHP:
$newmas[0][0]='1';
$newmas[0][1]='1';
$newmas[0][2]='1';
$newmas[0][3]='3'; - общее количество записей в предыдущем массиве $mas

$newmas[1][0]='2';
$newmas[1][1]='2';
$newmas[1][2]='2';
$newmas[1][3]='1'; - общее количество записей в предыдущем массиве $mas

$newmas[2][0]='3';
$newmas[2][1]='3';
$newmas[2][2]='3';
$newmas[2][3]='1'; - общее количество записей в предыдущем массиве $mas
Всю голову сломал, как это грамотнее сделать.
Прошу помощи.

Заранее благодарен!
 

frundik

Новичок
Копаю в эту строну, но ничего не получается :(
PHP:
$t = count($mas);
for ($i=0; $i<$t; $i++) 
{
	$tt=count($tempmas);
	for ($ii=0; $ii <= $tt; $ii++) 
		{
			if (($mas[$i][0] == $tempmas[$ii][0]) and ($mas[$i][1] == $tempmas[$ii][1]) and ($mas[$i][2] == $tempmas[$ii][2])) 
			{
				
			}
			else
			{ 
			$u = count($tempmas);
			$tempmas[$u][0]=$mas[$i][0];
			$tempmas[$u][1]=$mas[$i][1];
			$tempmas[$u][2]=$mas[$i][2];
			}
		}
}
 

frundik

Новичок
Решил пока так:
PHP:
function parspreorder($mas){

   // В новый массив уникальные записи
$duplicate=null;
for ($e = 0; $e < count($mas); $e++)
{

  $prov=0;
  for ($ee = 0 ; $ee < count($duplicate); $ee++)
  {
	  if (($mas[$e][0] == $duplicate[$ee][0]) and ($mas[$e][1] == $duplicate[$ee][1]) and ($mas[$e][2] == $duplicate[$ee][2])) 
	  {
	  $prov=1;
	  break;
	  }
	  else
	  {

	  }
  }
  if ($prov == 0) 
  {
  $ttd = count($duplicate); 
  $duplicate[$ttd][0]=$mas[$e][0];
  $duplicate[$ttd][1]=$mas[$e][1];
  $duplicate[$ttd][2]=$mas[$e][2];
  }
  
}

 // считаем количество повторений в старом массиве

for ($e = 0; $e < count($duplicate); $e++)
{
	$coa=0;
	for ($ee = 0 ; $ee < count($mas); $ee++)
	{
		if (($mas[$ee][0] == $duplicate[$e][0]) and ($mas[$ee][1] == $duplicate[$e][1]) and ($mas[$ee][2] == $duplicate[$e][2])) 	{
		$coa=$coa+1;
		}
	}
	$duplicate[$e][3]=$coa;
}

return $duplicate;
}
 
Сверху