использование массива для назначения классов css в tagcloud

#php #css #arrays #styling #tag-cloud

#php #css #массивы #стиль #облако тегов

Вопрос:

Мне интересно, есть ли какой-либо другой подход, чтобы сделать что-то подобное:

 $classes = array("tag5", "tag2", "tag9", "tag4", "tag1", "tag6", "tag10", "tag8", "tag3", "tag7" );
shuffle($tags); 
foreach ($tags as $tag) { 
    $class = $classes[array_rand($classes)];
    echo "<li><a href='#' class='".$class."'> ".$tag."</a></li>"; 
}
 

Дело в том, что когда я использую этот подход, то же самое a.class выбирается несколько раз, а некоторые классы вообще не выбираются.

Я хочу использовать tag1 через tag10, а не выбирать один и тот же класс дважды, пока не будут взяты все 10.

Кто-нибудь знает, как я могу это сделать?

Спасибо за любые ответы!

Комментарии:

1. разве перетасовки недостаточно для рандомизации массива? это даст вам случайный порядок без повторений

Ответ №1:

Поскольку вы уже рандомизируете порядок классов с shuffle помощью, нет причин рандомизировать их снова — просто перебирайте по порядку

 $classes = array("tag5", "tag2", "tag9", "tag4", "tag1", "tag6", "tag10", "tag8", "tag3", "tag7" );
shuffle($tags); 
foreach ($tags as $i => $tag) { 
    $class = $classes[$i % count($classes)];
    echo "<li><a href='#' class='".$class."'> ".$tag."</a></li>"; 
}
 

Комментарии:

1. @Tom: Добро пожаловать в SO. Пожалуйста, примите ответ. Это отметит ваш вопрос как ответ и покажет, как работает этот сайт. Смотрите также: meta.stackexchange.com/q/5234/147909 — Спасибо!