Php 如何从数据库创建数组?

Php 如何从数据库创建数组?,php,mysql,arrays,Php,Mysql,Arrays,请帮助我从数据库的字段创建数组。该字段包含以逗号分隔的记录。下图为: ID | article_title_fld | article_tags_fld | ---------------------------------------------------------------------- 1 | Learn PHP | PHP, coding, scripting |

请帮助我从数据库的字段创建数组。该字段包含以逗号分隔的记录。下图为:

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            |
我想收集文章\u标签\u fld中的所有记录,然后将其放入1个数组中。也许我把它命名为$array1,打印输出如下:

Array
(
[0] => PHP
[1] => coding
[2] => scripting
[3] => Javascript
[4] => scripting
[5] => tutorial
[6] => CSS
[7] => tutorial
[8] => web design
)
将用分隔符拆分字符串

将组合两个阵列

将修剪应用于所有图元

将删除标签两侧的所有空白

将用分隔符拆分字符串

将组合两个阵列

将修剪应用于所有图元


将删除标签两侧的所有空白。

已更新

您也可以使用

$array1 = array();
$result = mysql_query("SELECT ID , article_tags_fld FROM my_table");

while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
    $array1[] = $row['article_tags_fld'];
    // OR 
    // $array1[] = $row[1];
}
添加: 一行:

// use this version to behave as in your example..
$array1 = array_map('trim',explode(',',implode(',',$array1))); 

// use this version with array_unique for a non duplicate way...    
$array1 = array_unique(array_map('trim',explode(',',implode(',',$array1)))); 
显示:

 print_r( $array1 );

Array
(
    [0] => PHP
    [1] => coding
    [2] => scripting
    [3] => Javascript
    [4] => scripting
    [5] => tutorial
    [6] => CSS
    [7] => tutorial
    [8] => web design
)

已更新

您也可以使用

$array1 = array();
$result = mysql_query("SELECT ID , article_tags_fld FROM my_table");

while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
    $array1[] = $row['article_tags_fld'];
    // OR 
    // $array1[] = $row[1];
}
添加: 一行:

// use this version to behave as in your example..
$array1 = array_map('trim',explode(',',implode(',',$array1))); 

// use this version with array_unique for a non duplicate way...    
$array1 = array_unique(array_map('trim',explode(',',implode(',',$array1)))); 
显示:

 print_r( $array1 );

Array
(
    [0] => PHP
    [1] => coding
    [2] => scripting
    [3] => Javascript
    [4] => scripting
    [5] => tutorial
    [6] => CSS
    [7] => tutorial
    [8] => web design
)
事实上,我会先将表分为多个表

文章

article_ID | article_title_fld         |
----------------------------------------
1          | Learn PHP                 |
3          | Javascript Tutorial       |
4          | Styling with CSS          |
标签

物品标签

article_ID | tag_ID |
---------------------
1          | 1      |
1          | 2      |
1          | 3      |
3          | 4      |
3          | 3      |
3          | 5      |
4          | 6      |
4          | 5      |
4          | 7      |
然后在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;
}
当然,若您只是想要一个不重复的标签列表,那个么您可以使用这个查询

SELECT tag_title_fld
FROM tags
如果你想知道它们的使用频率:

SELECT tag_title_fld, COUNT(*) AS tag_count
FROM tags
JOIN articles_tags USING(tag_ID)
GROUP BY tag_title_fld
事实上,我会先将表分为多个表

文章

article_ID | article_title_fld         |
----------------------------------------
1          | Learn PHP                 |
3          | Javascript Tutorial       |
4          | Styling with CSS          |
标签

物品标签

article_ID | tag_ID |
---------------------
1          | 1      |
1          | 2      |
1          | 3      |
3          | 4      |
3          | 3      |
3          | 5      |
4          | 6      |
4          | 5      |
4          | 7      |
然后在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;
}
当然,若您只是想要一个不重复的标签列表,那个么您可以使用这个查询

SELECT tag_title_fld
FROM tags
如果你想知道它们的使用频率:

SELECT tag_title_fld, COUNT(*) AS tag_count
FROM tags
JOIN articles_tags USING(tag_ID)
GROUP BY tag_title_fld

这应该输出所有内容

$pdo = new PDO( /* CONNECTION */ );
$stmt = $pdo->query( 'SELECT article_tags_fld FROM TABLENAME' );

function mapFunc( $row ){ return explode( ',', $row[ 0 ] ) }

$all = array();
foreach( array_map( 'mapFunc', $stmt->fetchAll() ) as $row )
{
   $all = array_merge( $all, $row );
}
// $all now holds all of the values.

这应该输出所有内容

$pdo = new PDO( /* CONNECTION */ );
$stmt = $pdo->query( 'SELECT article_tags_fld FROM TABLENAME' );

function mapFunc( $row ){ return explode( ',', $row[ 0 ] ) }

$all = array();
foreach( array_map( 'mapFunc', $stmt->fetchAll() ) as $row )
{
   $all = array_merge( $all, $row );
}
// $all now holds all of the values.


我也会在混合中加入一个
trim
。我尝试了这个,得到了错误消息“警告:为C:\wamp\www\test\untitled4.php中的foreach()在第20行数组()上提供的参数无效”,改为使用while,loop,试试那个。使用while,loop时非常完美。谢谢,很好。很抱歉。小心使用
数组\u merge
。现在我想了想,你可能不会像最初要求的那样得到“tutorial”的两个副本。我也会在混合中加入一个
trim
。我尝试了这个,我得到了错误消息“警告:为C:\wamp\www\test\untitled4.php中的foreach()在第20行数组()”中提供了无效参数“改为使用while,loop,试试这个。使用while时完美,环谢谢,很好。很抱歉。小心使用
数组\u merge
。现在我想起来了,你可能不会像最初要求的那样得到两份“教程”。为什么你要用
\u fld
来结束名称。它只是一个名称,没有什么特别之处。:)你为什么用
\u fld
来结束名字。它只是一个名字,没有什么特别之处。:)输出是“数组([0]=>PHP,编码,脚本[1]=>Javascript,脚本,教程[2]=>CSS,教程,网页设计)”Opps!对不起,索菲亚!现在我明白你想要什么了!我的错!让我来换吧!输出:数组([0]=>PHP[1]=>coding[2]=>scripting Javascript[3]=>scripting[4]=>tutorial CSS[5]=>tutorial[6]=>web design)//在键2的“scripting”和“Javascript”之间,在键4.doh的“tutorial”和“CSS”之间应该有一个逗号;-)又更新了一次,这次我亲自测试了一下!;-)你错过了左侧的单引号“trim”,输出是“Array([0]=>PHP,coding,scripting[1]=>Javascript,scripting,tutorial[2]=>CSS,tutorial,web design)”Opps!对不起,索菲亚!现在我明白你想要什么了!我的错!让我来换吧!输出:数组([0]=>PHP[1]=>coding[2]=>scripting Javascript[3]=>scripting[4]=>tutorial CSS[5]=>tutorial[6]=>web design)//在键2的“scripting”和“Javascript”之间,在键4.doh的“tutorial”和“CSS”之间应该有一个逗号;-)又更新了一次,这次我亲自测试了一下!;-)你错过了左边“修剪”的单引号