本文共 1434 字,大约阅读时间需要 4 分钟。
参考
这四个函数都是php的函数
json_encode()
对变量进行json编码:把对象转为json字符串 执行成功返回 JSON 数据,否则返回 FALSE json_decode() 对json格式的字符串进行解码,把json格式字符串转为php变量urlencode()函数:
把字符串进行url编码 语法:string urlencode(string str) 它的参数和返回值都是字符串 urldecode()函数 把字符串进行url解码当使用json_encode()函数对php对象进行编码时,如果对象的某些字段(属性)是中文,就会有问题。
所以采取的办法:先把对象的字段进行url编码,再把对象进行json编码,再把对象进行url解码。 第一步:把对象的字段进行url编码,对象的字段还是个字符串,只不过是内容改变了(由中文变成了url编码) 第二步:把对象进行json编码,对象就成了json字符串格式。 第三步:因为对象已经是json字符串格式,所以可以对json字符串进行url解码(把url编码变成中文) 总得来说json编码是改变对象的格式:对象和字符串;url编码是改变同一内容的不同表现方式public function searchMaterial($keyname,$username){ $materialSer = D("Material","Service"); /*materials是一个二维数组,它的一个元素是一个php对象:物资类 物资类的title,attention,keywords等三个字段可能含有中文*/ $materials = $materialSer->appMatSearch($keyname); /*循环输出每一个json编码后的对象*/ foreach($materials as $key=>$val){ //1.将中文字段url编码 $val['title'] = urlencode($val['title']); $val['attention'] = urlencode($val['attention']); $val['keywords'] = urlencode($val['keywords']); //2.将对象json编码:$json_val是字符串格式,中文字段是url编码显示 $json_val = json_encode($val); //3.将json编码后的对象(json串)url解码:$json_material是字符串格式,中文字段是中文显示 $json_material = urldecode($json_val); echo($json_material); } /**如果物资对象的字段都没有中文内容,可以直接用下面方法把二维数组转为json串*/ // echo(json_encode($materials)); }
因为一个php对象相当于一个一位数组,所以存放php对象的数组就是二维数组
转载地址:http://jikrz.baihongyu.com/