假设表:
id (tinyint)
title (varchar 100)
content (text)
从这个简单的例子,如果要用到中文和英文,那就可以把2者同时的存入到 title 和 content 字段中。
例子:
$title = array('zh'=>'标题','en'=>'title');
就title一个字段里相当于是存入了这样的一个数组进去,但是如果要存数组,就需要将它进行序列化。
那么:
$title = serialize(array('zh'=>'标题','en'=>'title')); //结果a:2:{s:2:"zh";s:6:"标题";s:2:"en";s:5:"title";}
添加都好处理,主要是编辑这一步。其实也没那么麻烦,只要明白了数组重组的道理就好办了。
来一个例子。
$ss= 'a:2:{s:2:"zh";s:6:"123123";s:2:"en";s:12:"sdfsdfsdfsdf";}'; $aa = unserialize($ss); //print_r($aa); //exit; $tt = Array ( 'zh' => '123123' ,'en' => 'sdfsdfsdfsdf' ); $ttt = array('zh'=>'ssssss'); $rs = array_merge($tt,$ttt); //print_r($rs);
从上面的例子可以看出,只是在于数组重组这一步的操作,数组$tt里面的zh值被$ttt的zh值所覆盖,这样就实现了编辑的效果。
在处理字段的时候可用到以下这个简单的序列化重组的函数:
//1:传递来的字符串 表单 //2:数组的键 标识符 例如 'zh'=> //3 oldstr 是已经被序列化的字符串 数据库查询返回的字段值 function s_serialize($str,$key,$oldstr){ $str =array( $key => $str ); $array_str = array_merge(unserialize($oldstr),unserialize(serialize($str))); $array_str = serialize($array_str); return $array_str; }