2010年12月6日 星期一

PHP-implode的用法

紀錄implode的表達方式,起初在處理資料庫在針對陣列裡頭的值進行處理時所遇到的問題

*語法:implode('陣列元素間的內容',array)
*解釋:函數把數組元素組合為一個字符串。

以下demo了兩個範例互相比較。

一)、
程式碼
<?php
$A = array('A', 'B', 'C');
$AA=implode(',', $A);
echo $AA.'<BR>';
?>
echo 出來的結果
A,B,C
二)、
而另外一種表達方式是用於SQL的處理方式;而當時的處理條件為,刪除陣列元素以外的資料
假設陣列為以下:
$arr=array('AA','BB','CC')
SQL語法:
$sql="delete from table where `Name` not in(" . implode(',', $arr).")";
mysql_query($sql);
SQL印出來結果為:
delete from table where `Name` not in(AA,BB,CC)

以上SQL為錯誤的,因為not in裡頭為字串,卻沒有給予元素引號區隔,SQL會顯示錯誤
所以not in裡頭的元素正確的表達方式為以下
delete from table where `Name` not in('AA','BB','CC')

而這時就要利用到implode,以下為更正的表達SQL語法

$sql="delete from table where `Name` not in('" . implode("','", $arr)."')";
mysql_query($sql);

差別在於implode表達方式不一樣,而底下為比較方式的DEMO

<?php
$A = array('A', 'B', 'C');
$AA=implode(',', $A);
echo $AA.'<BR>';
$BB="'".implode("','", $A)."'";
echo $BB.'<BR>';
?>
印出來結果顯示為
A,B,C
'A','B','C'

沒有留言: