2016-08-23 33 views
1

我有一个列出像这样的表:通过解析数据库表并拉出唯一的名称

表名:测试

|--------------------| 
|------Column 1------| 
|--------------------| 
|John,Raul,Matt,Tyler| 
|Tim,Hannah----------| 
|Zeke,Brady,Tim,Tyler| 
|Elliot,Zeke---------| 
|Matt,Andrew,Idda----| 
... 

,我需要得到所有这些名称到一个PHP数组,没有多个相同名称的情况。

我会通过SQL获取每个唯一名称更好吗,还是应该拉列,然后通过PHP解析?

最终的PHP阵列会是什么样子:

$test_array[0]="John" 
$test_array[1]="Raul" 
$test_array[2]="Matt" 
$test_array[3]="Tyler" 
$test_array[4]="Tim" 
$test_array[5]="Hannah" 
$test_array[6]="Zeke" 
$test_array[7]="Brady" 
$test_array[8]="Elliot" 
$test_array[9]="Andrew" 
$test_array[10]="Idda" 

我不知道我怎么会分析每个细胞在表中。你们会怎么做?

+9

我的建议是规范化你的数据库,所以你没有逗号分隔列表-_- –

+0

类似问题:http://stackoverflow.com/questions/17942508/sql-split-values-to-multiple-rows – mingos

+3

逗号分开的项目...不要存储这样的数据,它只会导致你很多麻烦! – jarlh

回答

0

我同意最好规范化数据库。但是,鉴于你所描述的情况,我会执行SQL select并使用PHP来运行结果。

我初始化$结果为空字符串:

$results = ''; 

然后我会用串联$结果的每一行:

$results .= $row; 

然后我会使用爆炸()将阵列中的全部的名字:

$all_names = explode(',', $results); 

然后我会使用array_unique()来减少$ all_names数组唯一值:

$unique_names = array_unique($all_names); 

HTH。