php数组输出这样的json 上面是组装的吧,代码给的不全。 errcode = 0; errdesc = ""; 这两个哪里来的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的表数组没有这个值 errcode = 0; errdesc = "";你可以打印原数组看看print_r($listarr); 这个是数组合并的。主要是这部分的内容data = ( { "article_url" = "/disease/item/1"; "create_time" = "2014-08-11 11:38:58"; "knowledge_id" = 1; title = "\U6d4b\U8bd5\U9057\U4f20\U75c5\U5e931"; }, { "article_url" = "/disease/item/3"; "create_time" = "2014-07-22 15:38:28"; "knowledge_id" = 3; title = "\U6211\U7684\U9057\U4f20\U77e5\U8bc6"; } ); json沒有這樣的寫法,我想你大概意思是{ "data":[ { "article_url":"/disease/item/1", "create_time":"2014-08-11 11:38:58", "knowledge_id":"1", "title":"title1" }, { "article_url":"/disease/item/3", "create_time":"2014-08-11 11:38:58", "knowledge_id":"1", "title":"title3" } ], "errcode":"0", "errdesc":""}/** Json数据格式化 * @param Mixed $data 数据 * @param String $indent 缩进字符,默认4个空格 * @return JSON */ function jsonFormat($data, $indent=null){ // 对数组中每个元素递归进行urlencode操作,保护中文字符 array_walk_recursive($data, 'jsonFormatProtect'); // json encode $data = json_encode($data); // 将urlencode的内容进行urldecode $data = urldecode($data); // 缩进处理 $ret = ''; $pos = 0; $length = strlen($data); $indent = isset($indent)? $indent : ' '; $newline = "\n"; $prevchar = ''; $outofquotes = true; for($i=0; $i<=$length; $i++){ $char = substr($data, $i, 1); if($char=='"' && $prevchar!='\\'){ $outofquotes = !$outofquotes; }elseif(($char=='}' || $char==']') && $outofquotes){ $ret .= $newline; $pos --; for($j=0; $j<$pos; $j++){ $ret .= $indent; } } $ret .= $char; if(($char==',' || $char=='{' || $char=='[') && $outofquotes){ $ret .= $newline; if($char=='{' || $char=='['){ $pos ++; } for($j=0; $j<$pos; $j++){ $ret .= $indent; } } $prevchar = $char; } return $ret; } /** 将数组元素进行urlencode * @param String $val */ function jsonFormatProtect(&$val){ if($val!==true && $val!==false && $val!==null){ $val = urlencode($val); } } header('content-type:application/json;charset=utf8'); $result = array( 'data' => array( array( 'article_url' => '/disease/item/1', 'create_time' => '2014-08-11 11:38:58', 'knowledge_id' => 1, 'title' => 'title1' ), array( 'article_url' => '/disease/item/3', 'create_time' => '2014-08-11 11:38:58', 'knowledge_id' => 1, 'title' => 'title3' ), ), 'errcode' => 0, 'errdesc' => '');echo jsonFormat($result); 如果不需要格式話,可以echo jsonFormat($result);改為echo json_encode($result);即可。上面的function都可以不用了。 小弟初学PHP,有点问题,望各位帮忙 关于重定向 Zend studio打开不了 关于文件下载 问一个关 关于cookie的问题 insert into tb1 set a=(select max(row1) from tb3)+2;出错,怎么办? PHP下如何做OCR ?? PHP4.XXX有没有相关的API ??? 请问如何上传文件 php的安装问题 php apc的缓存问题 mysql语句问题, 求救, 在线等答案, 解决了立马结贴 php中php.ini遇到的问题
你可以打印原数组看看
print_r($listarr);
data = (
{
"article_url" = "/disease/item/1";
"create_time" = "2014-08-11 11:38:58";
"knowledge_id" = 1;
title = "\U6d4b\U8bd5\U9057\U4f20\U75c5\U5e931";
},
{
"article_url" = "/disease/item/3";
"create_time" = "2014-07-22 15:38:28";
"knowledge_id" = 3;
title = "\U6211\U7684\U9057\U4f20\U77e5\U8bc6";
}
);
"data":[
{
"article_url":"/disease/item/1",
"create_time":"2014-08-11 11:38:58",
"knowledge_id":"1",
"title":"title1"
},
{
"article_url":"/disease/item/3",
"create_time":"2014-08-11 11:38:58",
"knowledge_id":"1",
"title":"title3"
}
],
"errcode":"0",
"errdesc":""
}/** Json数据格式化
* @param Mixed $data 数据
* @param String $indent 缩进字符,默认4个空格
* @return JSON
*/
function jsonFormat($data, $indent=null){
// 对数组中每个元素递归进行urlencode操作,保护中文字符
array_walk_recursive($data, 'jsonFormatProtect');
// json encode
$data = json_encode($data);
// 将urlencode的内容进行urldecode
$data = urldecode($data);
// 缩进处理
$ret = '';
$pos = 0;
$length = strlen($data);
$indent = isset($indent)? $indent : ' ';
$newline = "\n";
$prevchar = '';
$outofquotes = true;
for($i=0; $i<=$length; $i++){
$char = substr($data, $i, 1);
if($char=='"' && $prevchar!='\\'){
$outofquotes = !$outofquotes;
}elseif(($char=='}' || $char==']') && $outofquotes){
$ret .= $newline;
$pos --;
for($j=0; $j<$pos; $j++){
$ret .= $indent;
}
}
$ret .= $char;
if(($char==',' || $char=='{' || $char=='[') && $outofquotes){
$ret .= $newline;
if($char=='{' || $char=='['){
$pos ++;
}
for($j=0; $j<$pos; $j++){
$ret .= $indent;
}
}
$prevchar = $char;
}
return $ret;
}
/** 将数组元素进行urlencode
* @param String $val
*/
function jsonFormatProtect(&$val){
if($val!==true && $val!==false && $val!==null){
$val = urlencode($val);
}
}
header('content-type:application/json;charset=utf8'); $result = array(
'data' => array(
array(
'article_url' => '/disease/item/1',
'create_time' => '2014-08-11 11:38:58',
'knowledge_id' => 1,
'title' => 'title1'
),
array(
'article_url' => '/disease/item/3',
'create_time' => '2014-08-11 11:38:58',
'knowledge_id' => 1,
'title' => 'title3'
),
),
'errcode' => 0,
'errdesc' => ''
);
echo jsonFormat($result);
echo jsonFormat($result);
改為
echo json_encode($result);
即可。上面的function都可以不用了。