[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: работа с массивами
dimonise
всем привет! такой вопрос - есть база из которой выбираю одно поле. в этом поле может быть как одно так и несколько слов. из них я делаю теги (облако тегов) но встречаются повторы.
array_unique()
не подходит - получается что выбираю не один массив слов а кучу. так вот нужно эту кучу массивов сделать одним. вот код:

require('conf.php');
$tid = $_SESSION['tid'];

$datas = mysql_query("SELECT * FROM `for_topics` ORDER by rand() LIMIT 50",$db);
echo "<br><br><center><h3 style='font-family:Comic Sans MS;color:#93B0BD;font-size: small;'>САМЫЕ ПОПУЛЯРНЫЕ ТЕГИ</h3></center><br>";
$data_all = array();
while($data = mysql_fetch_assoc($datas)){

$data_s = $data['title'];
$data_s = explode(" ",$data_s);



foreach ( $data_s as $key=>$val ) {


$fs_min = 17;
$fs_max = 10;
$fs_dif = $fs_max - $fs_min;
$tc_min = 1;//min($val);
$tc_max = 1;//max($val);
$tc_dif = $tc_max - $tc_min;
if ( $tc_dif==0 ) {$tc_dif = 1;}
$step = $fs_dif / $tc_dif;


if(strlen($val)>5){
$size = round($fs_min + ($key - $tc_min ) * $step);
echo '<a class="tags" style="font-size:'.$size.'px;" href="find.php?find_t='.$val.'" >'.$val.'</a>'."\n";
}
}
}






Спустя 10 часов, 18 минут, 9 секунд (7.10.2011 - 06:50) nugle написал(а):
может попробовать функцию array_merge_recursive?

Спустя 6 часов, 28 минут, 8 секунд (7.10.2011 - 13:19) IPnex написал(а):
Если я правильно понял, тебе нужно убрать повторяющиеся теги?
Если да, то попробуй перед foreach определить пустой массив, например $arr = array(),
а в начале цикла foreach прописать следующее:
if(in_array($val, $arr)) continue;
else $arr[] = $val;

Как-то так

Спустя 20 минут, 4 секунды (7.10.2011 - 13:39) nugle написал(а):
IPnex
а почему бы не сделать тогда так
if(!in_array($val, $arr)) $arr[] = $val;

К чему лишнее строчки?

Спустя 25 минут, 49 секунд (7.10.2011 - 14:04) IPnex написал(а):
Цитата (nugle @ 7.10.2011 - 13:39)
IPnex
а почему бы не сделать тогда так
if(!in_array($val, $arr)) $arr[] = $val;

К чему лишнее строчки?

Тогда итерация с повторным значением пройдет и это значение снова отобразится в тегах. Поэтому надо делать continue

Спустя 2 дня, 6 часов, 23 минуты, 21 секунда (9.10.2011 - 20:28) dimonise написал(а):
не помогло.... может еще кто что подскажет?

Спустя 1 час, 7 минут, 45 секунд (9.10.2011 - 21:36) dimonise написал(а):
помогите, кто может... завал прямо с этим вопросом... срочно нужно...

Спустя 28 минут, 57 секунд (9.10.2011 - 22:05) Игорь_Vasinsky написал(а):
1. Делаешь выборку из БД с DISTINCT или GROUP BY
2. после каждой выборки создаёшь массив
3. объеденяешь все массивы array_merge();
4. Новый массив прогоняешь через array_unique()

вот у тя и массив с уникальными элементами.

Спустя 8 часов, 21 минута, 9 секунд (10.10.2011 - 06:26) dimonise написал(а):
всем спасибо! нашел свое решение! кому интересно -

$datas = mysql_query("SELECT * FROM `for_topics` ORDER by rand() LIMIT 50",$db);
echo "<br><br><center><h3 style='font-family:Comic Sans MS;color:#93B0BD;font-size: small;'>САМЫЕ ПОПУЛЯРНЫЕ ТЕГИ</h3></center><br>";
$data_s = array();
while($data = mysql_fetch_assoc($datas))
{
$data_s .=" ". $data['title'];
}

$data_s = explode(" ",$data_s);
$data_s = array_unique($data_s);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.