上面是组装的吧,代码给的不全。  errcode = 0;
    errdesc = ""; 这两个哪里来的?

解决方案 »

  1.   

    你的表数组没有这个值  errcode = 0;    errdesc = "";
    你可以打印原数组看看
    print_r($listarr);
      

  2.   

    这个是数组合并的。主要是这部分的内容
    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";
      }
     );
      

  3.   

    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);
      

  4.   

    如果不需要格式話,可以
    echo jsonFormat($result);
    改為
    echo json_encode($result);
    即可。上面的function都可以不用了。