2011-06-07 39 views
7

我有正在使用此代碼返回的結果集:如何轉換值的陣列從查詢返回到逗號分隔值

while ($row = mysql_fetch_array($result)) { 

echo "ID ".$row['v2id']; 

} 

此返回ID 2ID 3ID 4ID 8

我將如何轉換爲逗號分隔值,然後將它們存儲在一個變量?

所以,如果我呼應出變量,最終輸出將應該像圖2,3,4,8

+1

值本身可以包含逗號? – 2011-06-07 08:08:30

回答

6

存儲中的所有陣列中的,然後加入他們使用的值「」作爲膠

$values = array(); 

while ($row = mysql_fetch_array($result)) { 
    $values[] = $row['v2id']; 
} 

echo join(", ", $values); 
+0

然後,我將如何在查詢中使用這些值:SELECT * FROM videos WHERE video_id IN(value,value,value); – 2011-06-07 08:18:22

+0

''SELECT * FROM videos where video_id IN('。join(',',$ values)。')''。確保$值不是一個空數組,否則最終會在sql中出現語法錯誤。 – 2011-06-07 08:26:07

+0

由於您似乎只是存儲數字,所以在這種情況下會起作用,但應該注意的是,CSV文件比用逗號連接的值列表更復雜。如果'$ values'包含任何帶逗號的項目,如果嘗試將其轉換回數組,則輸出的字符串將不會被正確解析。如果你只是加入他們展示給人類,這將工作得很好,但如果你希望它是機器可讀的,你將不得不做更多的事情'加入'他們。 – 2011-06-07 08:33:33

1

所有值添加到一個數組,那麼它使用', 'implode膠水

$result = array(); 
while ($row = mysql_fetch_array($result)) { 
    $result[] = $row['v2id']; 
} 
echo implode(', ', $result); 
1
$data = array(1,2,'Hello',3,4,'1,234.56'); 

$outstream = fopen("php://temp", 'r+'); 
fputcsv($outstream, $data, ',', '"'); 
rewind($outstream); 
$csv = fgets($outstream); 
fclose($outstream); 
1
$ids = array(); 

while ($row = mysql_fetch_array($result)) { 
    $ids[] = (int)$row['v2id']; 
} 

echo implode(", ", $values); 

1ID 2ID 3ID 4ID 8可以通過(int)$ row ['v2id']轉換爲int,所以$ ids將只包含int。

0

我的方法是這樣

 
$csv = ''; 
while ($row = mysql_fetch_array($result)) { 
    /* Note the '.=' - appends variable */ 
    $csv .= "ID ".$row['v2id']; 
    $csv .= ','; // This is the bit I missed out 
} 
/* Remove the final trailing comma */ 
$csv = substr($csv, 0, -1); 
echo $csv;

金五星爲察覺的「故意」的錯誤去ssapkota

+1

沒有','它怎麼可能是CSV? – ssapkota 2011-06-07 10:57:36

+0

斑點 - 現在已經改正了 – RiggerTheGeek 2011-08-10 09:55:27