Игорь 1 десятилетие назад
Самый простой код:
function cmp_tag($a, $b) {
if($a["tag"] == $b["tag"]) return 0;
return strcmp($a["tag"] , $b["tag"]);
}
$str_tags= "google,100;почта,25";
$sizes = array( "x-small", "small", "medium", "large", "x-large" );
$AllTags = explode(';',$str_tags); // из строки получаем все теги с индексом
foreach ($AllTags as $OneTag) { // создаем массив тегов
$tmpArrayTag = explode(',',$OneTag);
$arrayTag[] = array( 'tag'=>$tmpArrayTag[0], 'tag_index' => $tmpArrayTag[1]);
}
// высчитываем индексы
foreach ($arrayTag as $line) {
$tags[trim($line['tag'])] = $line['tag_index'];
$indexes[] = $line['tag_index'];
}
$min = min($indexes);
$max = max($indexes);
$range = ($max-$min);
// строим
foreach ($tags as $tag => $index) {
$lines[$tag]["tag"] = $tag;
$lines[$tag]["tag_index"] = $index;
$lines[$tag]["size"] = $sizes[sprintf("%d", ($index-$min)/$range*4 )];
$lines[$tag]["title"] = "Тег ".$tag." найден ".$index.' раз ';
}
usort ($lines, "cmp_tag");
foreach ($lines as $OutPutTag) {
echo "".$OutPutTag['tag']." ";
}