У меня есть такая база данных:
+----+---------------------+
| id | tags |
+----+---------------------+
| 1 | test1, test2, test3 |
| 2 | test1, test2, test3 |
| 3 | test1, test2, test3 |
| 4 | test1, test2, test3 |
| 5 | buh1, buh2, buh3 |
+----+---------------------+
Теперь я хочу отобразить самые популярные теги из этой базы данных. У меня есть функция, и она работает с таким массивом:
$ tag_array = array (
'test1, test2 test, test3',
'test2, test4, test2',
'buh, buh2, buh3');
Функция:
function popularTags($tag_array) {
$p = array();
foreach($tag_array as $tags) {
$tags_arr = array_map('trim', explode(',', $tags));
foreach($tags_arr as $tag) {
$p[$tag] = array_key_exists($tag, $p) ? $p[$tag]+1 : 1;
}
}
arsort($p);
return $p;
}
Вот как отобразить самые популярные теги:
foreach(popularTags($tag_array) as $tag=>$num)
{
echo $tag, " (", $num, ")<br />";
}
Пока это работает с обычным массивом.
Теперь я хочу получить теги из базы данных, поэтому я извлекаю значения из базы данных и запускаю такую функцию:
$result = mysql_query("select * from DB ORDER BY date DESC");
while($row = mysql_fetch_array($result)){
$tag_array = $row["$tags"];
foreach(popularTags($tag_array) as $tag=>$num)
{
echo $tag, " (", $num, ")<br />";
}
}
Это дает мне ошибку, хотя:
Предупреждение. В foreach () указан неверный аргумент
Итак, мой вопрос, как показать наиболее популярные теги из базы данных с помощью этой функции?
Спасибо