如何从数据库创建数组?

Sof*_*rus 1 php mysql arrays

请帮我从我的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)

Geo*_*off 8

$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将删除标签两侧的任何空白区域.


Pow*_*ord 7

实际上,我会先将表规范化为多个表.

用品

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)