<?php
$set = array();
$data = array(
'3' => 'h5-1',
'4' => 'h5-2',
'2' => 'h5-3',
'1' => 'h5-4',
'0' => 'h5-6',
'5' => 'h5-7',
'6' => 'h5-8',
'7' => 'h5-9',
'8' => 'h5-10',
'9' => 'h5-11',
'10' => 'h5-13',
'11' => 'h5-15',
'12' => 'h5-19',
'789' => 'h1-8',
'123' => 'p-78',
'3000' => 'p-8',
);
foreach($data as $each_element){
$each_val = explode("-",$each_element);
if(!isset($set[$each_val[0]])){
$set[$each_val[0]] = intval($each_val[1]);
}
$set[$each_val[0]] = max(intval($each_val[1]),$set[$each_val[0]]);
}
print_r($set);
Вывод:
Array
(
[h5] => 19
[h1] => 8
[p] => 78
)
Алгоритм:
Создать набор тегов, который будетбыть ассоциативным массивом, где key
будет именем тега, а value
будет максимальным значением этого тега, присутствующего в вашем массиве.
Если ключ уже установлен,получить максимальное значение между значением в ключе (теге) и новым значением, которое также принадлежит тому же тегу.Таким образом, у вас есть максимум для каждого тега.