lxydjx 正解,我來詳細補充一下吧。未經測試、、、
創新互聯建站堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站設計、做網站、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的大安網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
//初始化
$sql = array();
// 從 a.php POST 過來的值
$_POST["xinxi"] = "20-2,19-1,18-1";
// 拆分為 array("20-2", "19-1", "18-1");
$post_data = explode(",", $_POST["xinxi"]);
// 循環數組
for($i = 0; $i count($post_data); $i++) {
// 再次拆分每一條信息為 array("20", "2"), array("19", "1"), array("18", "1")
$details = explode("-", $post_data[$i]);
// 將每一條信息添加到 $sql 數組中
array_push($sql, "(20121015194535193356, ".$details[0].", ".$details[1].")");
}
// 用 , 連接,轉換為 string
$sql = implode(",", $sql);
// 插入數據庫
mysql_query("INSERT INTO table_sales (dingid, detailsid, buynumber) VALUES ($sql)");
利用PHP對數組賦值時下標變量會自動遞增的特點,可以很方便用循環將數據存入一個數組。例如:$arr[] = 'a'; 這條語句會將字符a存入數組變量$arr中,如果$arr不存在則會新建一個;若已存在,則將$arr數組的下標變量遞增1后存入字符。也就是說,如果已有$arr[0]='a', 那么執行 $arr[] = 'b'; 后,數組其實是進行了$arr[1] = 'b' 的操作。
array2string函數 是phpcms自帶的函數
/phpcms/libs/functions/global.func.php 第293行
/**
* 將數組轉換為字符串
*
* @param array $data 數組
* @param bool $isformdata 如果為0,則不使用new_stripslashes處理,可選參數,默認為1
* @return string 返回字符串,如果,data為空,則返回空
*/
function array2string($data, $isformdata = 1) {
if ($data == '')
return '';
if ($isformdata)
$data = new_stripslashes($data);
return addslashes(var_export($data, TRUE));
}
數組是沒有辦法插入mysql數據庫的,一般是把數組連接成字符串,存入,取出再拆分為數組輸出。implode('連接符號',數組$arr);explode('拆分標志',字符串$a);
直接存數組里的字符串就行了。
如$a="0,1,2,3,";或$a=join(",",array(0,1,2,3));
mysql_query("INSERT INTO admin (monday) VALUES($a)");
這樣字段monday的就是0,1,2,3,
讀取的時候要重新組成數組的話就分割重組。
把數組轉成json或其他字符串在寫入數據庫,不轉換字符串無法寫入或自由Array,我是沒試過,反正我知道是無法寫入,我都是轉成json后在寫入。
?php
$array=array(
"data1"="data1",
"data2"=array(
"data22"="data22",
"data222"="data222"
),
"data3"="data3"
);
$encode=json_encode($array);?//數據庫寫入轉換
$addslashes=addslashes(json_encode($array));?//如果只用英文字符的話可以直接用上面,用中文或有帶斜杠/,PHP寫入數據庫的時候會去掉斜杠/,所以addslashes函數在轉換下寫入
$decode=json_decode($array,true);?//數據庫讀取轉換
?