请帮我从我的DB字段创建一个数组.该字段的记录以逗号分隔.以下是插图:
ID | article_title_fld | article_tags_fld |
----------------------------------------------------------------------
1 | Learn PHP | PHP, coding, scripting |
3 | Javascript Tutorial | Javascript, scripting, tutorial |
4 | Styling with CSS | CSS, tutorial, web design |
Run Code Online (Sandbox Code Playgroud)
我想收集article_tags_fld中的所有记录,然后将其放入1个数组中.也许我将它命名为$ array1,打印输出如下:
Array
(
[0] => PHP
[1] => coding
[2] => scripting
[3] => Javascript
[4] => scripting
[5] => tutorial
[6] => CSS
[7] => tutorial
[8] => web design
)
Run Code Online (Sandbox Code Playgroud)
$array1 = array();
$result = mysql_query("SELECT article_tags_fld FROM MY_TABLE");
while ($row = mysql_fetch_assoc($result)) {
$array1 = array_merge($array1, array_map('trim', explode(",", $row['article_tags_fld'])));
}
Run Code Online (Sandbox Code Playgroud)
explode将通过分隔符拆分字符串.
array_merge将组合两个数组.
array_map将修剪应用于所有元素.
trim将删除标签两侧的任何空白区域.
实际上,我会先将表规范化为多个表.
用品
article_ID | article_title_fld |
----------------------------------------
1 | Learn PHP |
3 | Javascript Tutorial |
4 | Styling with CSS |
Run Code Online (Sandbox Code Playgroud)
标签
tag_ID | tag_title_fld |
------------------------
1 | PHP |
2 | coding |
3 | scripting |
4 | Javascript |
5 | tutorial |
6 | CSS |
7 | web design |
Run Code Online (Sandbox Code Playgroud)
article_tags
article_ID | tag_ID |
---------------------
1 | 1 |
1 | 2 |
1 | 3 |
3 | 4 |
3 | 3 |
3 | 5 |
4 | 6 |
4 | 5 |
4 | 7 |
Run Code Online (Sandbox Code Playgroud)
然后在PHP中
$array1 = array();
$result = mysql_query("
SELECT tag_title_fld
FROM tags
JOIN articles_tags USING(tag_ID)
ORDER BY article.article_ID
");
foreach($result as $row) {
$array1[] = $row['tag_title_fld'];
// With count. See below for the query it goes with
// $array2 = array();
// $array2['tag'] = $row['tag_title_fld'];
// $array2['count'] = $row['tag_count'];
// $array1[] = $array2;
}
Run Code Online (Sandbox Code Playgroud)
当然,如果您只想要一个没有重复的标签列表,那么您可以使用此查询.
SELECT tag_title_fld
FROM tags
Run Code Online (Sandbox Code Playgroud)
如果你想要他们计算他们的使用频率:
SELECT tag_title_fld, COUNT(*) AS tag_count
FROM tags
JOIN articles_tags USING(tag_ID)
GROUP BY tag_title_fld
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15087 次 |
| 最近记录: |