2014-05-04 12 views
0

我是php的新学习者。我正面临着解决以下问题的问题。
我下表从两行中找到常用数据,并用逗号分隔数据

-------------------------------------- 
Items  T_id 
-------------------------------------- 
I1-------- T1,T4,T5,T7,T7,T8,T9 
I2-------- T1, T2, T3, T4, T6, T8, T9 
I3-------- T5, T6, T7, T8, T9 

现在我想从两行找到共同的项目和数据,以逗号分隔。

-------------------------------------- 
Items  T_id 
-------------------------------------- 
I1,I2----- T1,T4,T8,T9 
I2,I3----- T6,T8,T9 

也想找到共同的交易ID为三排

-------------------------------------- 
Items  T_id 
-------------------------------------- 
I1,I2,I3-- T8,T9 

人有上述意见或想法?
请给出答案。

+0

是尝试。标准化您的数据 – Strawberry

回答

2

该示例显示了一行,如果来自数据库查询,则该行没有标准化。如果数据在数据库上,第一步是正常化它,然后你可以使用内部连接。

否则,您可能需要检查array_intersect documentation并将其反复应用于您的 行。

  • 获取第一和第二行到一个数组(你可以使用爆炸)
  • 计算其交叉点(命名为rowIntersection
  • 获取第三行到一个数组
  • 计算其交叉点与rowIntersection
  • 并重复,直到你不在行

最后使用“,”分解产生的数组作为分隔符。

问候

+0

该示例显示了一个未标准化的行。如果数据在数据库上,第一步是正常化它,然后你可以使用连接。 –

+0

添加了对评论的回复 –

0

您可以

$sql=select * from table; 

$arr=array(); 
while($row=mysql_fetch_assoc($sql)){ 
    $arr[]=explode(',',$row['T_id']); 
} 

$arr_merge=array(); 
foreach($arr as $value){ 
    $arr_merge[]=array_merge($arr_merge,$value) 
} 

$arr_val[]=array_intersect($arr_merge); 
+0

根据您所说的更改 – user3470953

+0

感谢您指出 – user3470953

相关问题