2012-07-16 88 views
-1

我有一句话表:行合并在同一个ID为阵列

====================================================================== 
| id_row | id_document | id_sentence |  sentence   | 
====================================================================== 
|  1 |  1  |  0   | Example sentences A | 
|  2 |  1  |  1   | Example sentences B | 
|  3 |  2  |  0   | Example sentences C | 
|  4 |  2  |  1   | Example sentences D | 
====================================================================== 

我想合并句子具有相同id_document成阵列状=>Array([1] => Array ([0] => Example sentences A [1] => Example sentences B) [2] => Array ([0] => Example sentences C [1] => Example sentences D))

下面的代码:

<?php 
require_once 'conf.php'; 
$sql = mysql_query('SELECT sentence FROM sentence group by id_document') or die(mysql_error()); 
while ($row = mysql_fetch_array($sql)) { 
    $sentence[] = $row['sentence']; 
} 
print_r($sentence); 
?> 

但是,我只是在每个不同的id_document中得到一个句子。帮我。谢谢:)上id_document

回答

3

指数的阵列,并添加新条目数组是这样的:

while ($row = mysql_fetch_array($sql)) { 
    $sentence[ $row['id_document'] ][] = $row['sentence']; 
} 
+0

我试过了, nd我得到的结果是'Array([] => Array([0] =>例句A [1] =>例句C))'例句B'和'例句D'不被打印。 – bruine 2012-07-16 01:23:55

+0

我认为你没有正确复制它 - 确保你在等号之前加入了额外的'[]'。 – nickb 2012-07-16 01:24:40

+0

我已经将其正确复制。我认为我的查询'$ sql = ...'有问题。我通过下面的答案修改了我的代码。 cmiiw。谢谢 ! :) – bruine 2012-07-16 04:07:27

1

你可以写:

while ($row = mysql_fetch_array($sql)) 
{ 
    $sentence[$row['id_document']][] = $row['sentence']; 
} 
1
while ($row = mysql_fetch_array($sql)) 
    $sentence[$row['id_document']][] = $row['sentence']; 
0

这是我的最终代码:

<?php 

require_once 'conf.php'; 
$sql = mysql_query('SELECT sentence, id_document FROM sentence ') or die(mysql_error()); 
while ($row = mysql_fetch_array($sql)) { 
    $sentence[$row['id_document']][] = $row['sentence']; 
} 
print_r($sentence); 

?> 
+0

这正是别人对你说的。你应该接受别人的回答,而不是你的复制粘贴。 – 2012-08-06 00:17:54