Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JSON输出开头不需要的{}_Php_Json - Fatal编程技术网

Php JSON输出开头不需要的{}

Php JSON输出开头不需要的{},php,json,Php,Json,我在php代码的json输出的开头得到了{}。如何消除这种情况?我正在android中访问php的JSON输出。当android代码执行时,它显示从php代码中获取数据的错误 <?php include_once "/db_connect.php"; $db = new DB_CONNECT(); $head='0'; if(empty($head)){ for($head=1;$

我在php代码的json输出的开头得到了{}。如何消除这种情况?我正在android中访问php的JSON输出。当android代码执行时,它显示从php代码中获取数据的错误

        <?php

        include_once "/db_connect.php";
        $db = new DB_CONNECT();
        $head='0';

        if(empty($head)){

            for($head=1;$head<20;$head++){

                if(!empty($head)){

                $response["abc"] = array();


            $flatp=mysql_query("SELECT co.id,co.user_id,co.cat_id,co.flatP,hds.HeadName,co.offer_name,u.shop_name,co.cost FROM abc co INNER JOIN categories ct ON ct.id=co.cat_id INNER JOIN 
                xyz u ON u.id=co.user_id INNER JOIN heads hds ON hds.id=ct.Head_id 
                 WHERE ct.Head_id='$head' AND ct.id=co.cat_id AND co.user_id=u.id ORDER BY co.flatP DESC LIMIT 1");

        if (mysql_num_rows($flatp) >0) {


        while ($row = mysql_fetch_array($flatp)) {  
         $recp = array();

           $recp["HeadName"]= $row["HeadName"];
          $recp["offer_name1"]=$row["offer_name"];
         $recp["shop_name1"]=$row['shop_name'];
         $recp["cost1"]=$row['cost'];

        $head_id=$row['user_id'];
        //$recp["$head_id"]='user_id';

        $imageurl='../local_offers_app/trunk/offer_images/'.$head_id.'/'.$row['id'].'.jpg';

        $img=stripslashes($imageurl);
        array_push($response["abc"], $recp);

        }
        }

        $buyget=mysql_query("SELECT co.id,co.user_id,co.cat_id,co.offer_name,co.cost,u.shop_name, CASE WHEN buy>'get' THEN buy
                else 'get'  END as buy FROM abc co INNER JOIN categories ct ON ct.id=co.cat_id INNER JOIN xyz u ON u.id=co.user_id 
                WHERE ct.Head_id='$head' AND ct.id=co.cat_id ORDER BY co.buy DESC LIMIT 1");

        if(mysql_num_rows($buyget) >0) {

         while ($row = mysql_fetch_array($buyget)) {
            $recp = array();

        $recp["offer_name2"]=$row["offer_name"];
         $recp["shop_name2"]=$row['shop_name'];
         $recp["cost2"]=$row['cost'];

        array_push($response["abc"], $recp);

        }
        }

        $buygetamt=mysql_query("SELECT a.id,a.user_id,a.cat_id,a.offer_name,a.cost,u.shop_name,a.buyqnt, 
        SUM(IF(a.cost<b.cost,1,0)) A,
        SUM(IF(a.buyqnt>b.buyqnt,1,0)) B
        FROM abc a JOIN abc b ON a.cost<b.cost AND a.buyqnt>b.buyqnt
         LEFT OUTER JOIN abc c ON a.cost=c.cost AND
         a.id>c.id AND b.id<c.id INNER JOIN categories ct ON ct.id=a.cat_id INNER JOIN xyz u ON u.id=a.user_id WHERE 
         ct.Head_id='$head' AND c.id IS NULL GROUP BY a.cost ORDER BY buyqnt DESC LIMIT 1");

         if(mysql_num_rows($buygetamt) >0) {
        while ($row = mysql_fetch_array($buygetamt)) {
            $recp = array();
           $recp["offer_name3"]=$row["offer_name"];
         $recp["shop_name3"]=$row['shop_name'];
        $recp["cost3"]=$row['cost'];
        array_push($response["abc"], $recp);

        }
        }

        $buygetp=mysql_query("SELECT a.id,a.user_id,a.cat_id,a.buyqnt,a.buyqntP,a.offer_name,a.cost,u.shop_name, 
        SUM(IF(a.buyqnt<b.buyqnt,1,0)) A,
        SUM(IF(a.buyqntP>b.buyqntP,1,0)) B
        FROM abc a JOIN abc b ON a.buyqnt<b.buyqnt AND a.buyqntP>b.buyqntP LEFT OUTER
        JOIN abc c ON a.buyqnt=c.buyqnt AND a.id>c.id AND b.id<c.id INNER JOIN categories 
        ct ON ct.id=a.cat_id INNER JOIN xyz u ON u.id=a.user_id WHERE ct.Head_id='$head' AND c.id IS NULL GROUP BY 
        a.buyqntP ORDER BY buyqntP DESC LIMIT 1");

        if(mysql_num_rows($buygetp) >0) {

        while ($row = mysql_fetch_array($buygetp)) {

            $recp = array();
        $recp["offer_name4"]=$row["offer_name"];
         $recp["shop_name4"]=$row['shop_name'];
        $recp["cost4"]=$row['cost'];

        array_push($response["abc"], $recp);

        }

        }

        $upto=mysql_query("SELECT a.id,a.user_id,a.cat_id,a.offer_name,a.cost,u.shop_name,a.upto, 
        SUM(IF(a.cost<b.cost,1,0)) A,
        SUM(IF(a.upto>b.upto,1,0)) B
        FROM abc a JOIN abc b ON  a.upto>b.upto LEFT OUTER JOIN abc c 
        ON a.cost=c.cost AND a.id>c.id AND b.id<c.id INNER JOIN categories ct ON ct.id=a.cat_id
         INNER JOIN xyz u ON u.id=a.user_id WHERE ct.Head_id='$head' AND c.id IS NULL GROUP BY a.upto ORDER BY upto DESC LIMIT 1");

        if(mysql_num_rows($upto) >0) {

        while ($row = mysql_fetch_array($upto)) {
            $recp = array();
        $recp["offer_name5"]=$row["offer_name"];
        $recp["shop_name5"]=$row['shop_name'];
        $recp["cost5"]=$row['cost'];
        array_push($response["abc"], $recp);

        }
        }       
        }
            $object = (object) array_filter((array) $response);
            $result = json_encode($object);
            echo $result;
                }
            }


        ?>
这是我的php代码

        <?php

        include_once "/db_connect.php";
        $db = new DB_CONNECT();
        $head='0';

        if(empty($head)){

            for($head=1;$head<20;$head++){

                if(!empty($head)){

                $response["abc"] = array();


            $flatp=mysql_query("SELECT co.id,co.user_id,co.cat_id,co.flatP,hds.HeadName,co.offer_name,u.shop_name,co.cost FROM abc co INNER JOIN categories ct ON ct.id=co.cat_id INNER JOIN 
                xyz u ON u.id=co.user_id INNER JOIN heads hds ON hds.id=ct.Head_id 
                 WHERE ct.Head_id='$head' AND ct.id=co.cat_id AND co.user_id=u.id ORDER BY co.flatP DESC LIMIT 1");

        if (mysql_num_rows($flatp) >0) {


        while ($row = mysql_fetch_array($flatp)) {  
         $recp = array();

           $recp["HeadName"]= $row["HeadName"];
          $recp["offer_name1"]=$row["offer_name"];
         $recp["shop_name1"]=$row['shop_name'];
         $recp["cost1"]=$row['cost'];

        $head_id=$row['user_id'];
        //$recp["$head_id"]='user_id';

        $imageurl='../local_offers_app/trunk/offer_images/'.$head_id.'/'.$row['id'].'.jpg';

        $img=stripslashes($imageurl);
        array_push($response["abc"], $recp);

        }
        }

        $buyget=mysql_query("SELECT co.id,co.user_id,co.cat_id,co.offer_name,co.cost,u.shop_name, CASE WHEN buy>'get' THEN buy
                else 'get'  END as buy FROM abc co INNER JOIN categories ct ON ct.id=co.cat_id INNER JOIN xyz u ON u.id=co.user_id 
                WHERE ct.Head_id='$head' AND ct.id=co.cat_id ORDER BY co.buy DESC LIMIT 1");

        if(mysql_num_rows($buyget) >0) {

         while ($row = mysql_fetch_array($buyget)) {
            $recp = array();

        $recp["offer_name2"]=$row["offer_name"];
         $recp["shop_name2"]=$row['shop_name'];
         $recp["cost2"]=$row['cost'];

        array_push($response["abc"], $recp);

        }
        }

        $buygetamt=mysql_query("SELECT a.id,a.user_id,a.cat_id,a.offer_name,a.cost,u.shop_name,a.buyqnt, 
        SUM(IF(a.cost<b.cost,1,0)) A,
        SUM(IF(a.buyqnt>b.buyqnt,1,0)) B
        FROM abc a JOIN abc b ON a.cost<b.cost AND a.buyqnt>b.buyqnt
         LEFT OUTER JOIN abc c ON a.cost=c.cost AND
         a.id>c.id AND b.id<c.id INNER JOIN categories ct ON ct.id=a.cat_id INNER JOIN xyz u ON u.id=a.user_id WHERE 
         ct.Head_id='$head' AND c.id IS NULL GROUP BY a.cost ORDER BY buyqnt DESC LIMIT 1");

         if(mysql_num_rows($buygetamt) >0) {
        while ($row = mysql_fetch_array($buygetamt)) {
            $recp = array();
           $recp["offer_name3"]=$row["offer_name"];
         $recp["shop_name3"]=$row['shop_name'];
        $recp["cost3"]=$row['cost'];
        array_push($response["abc"], $recp);

        }
        }

        $buygetp=mysql_query("SELECT a.id,a.user_id,a.cat_id,a.buyqnt,a.buyqntP,a.offer_name,a.cost,u.shop_name, 
        SUM(IF(a.buyqnt<b.buyqnt,1,0)) A,
        SUM(IF(a.buyqntP>b.buyqntP,1,0)) B
        FROM abc a JOIN abc b ON a.buyqnt<b.buyqnt AND a.buyqntP>b.buyqntP LEFT OUTER
        JOIN abc c ON a.buyqnt=c.buyqnt AND a.id>c.id AND b.id<c.id INNER JOIN categories 
        ct ON ct.id=a.cat_id INNER JOIN xyz u ON u.id=a.user_id WHERE ct.Head_id='$head' AND c.id IS NULL GROUP BY 
        a.buyqntP ORDER BY buyqntP DESC LIMIT 1");

        if(mysql_num_rows($buygetp) >0) {

        while ($row = mysql_fetch_array($buygetp)) {

            $recp = array();
        $recp["offer_name4"]=$row["offer_name"];
         $recp["shop_name4"]=$row['shop_name'];
        $recp["cost4"]=$row['cost'];

        array_push($response["abc"], $recp);

        }

        }

        $upto=mysql_query("SELECT a.id,a.user_id,a.cat_id,a.offer_name,a.cost,u.shop_name,a.upto, 
        SUM(IF(a.cost<b.cost,1,0)) A,
        SUM(IF(a.upto>b.upto,1,0)) B
        FROM abc a JOIN abc b ON  a.upto>b.upto LEFT OUTER JOIN abc c 
        ON a.cost=c.cost AND a.id>c.id AND b.id<c.id INNER JOIN categories ct ON ct.id=a.cat_id
         INNER JOIN xyz u ON u.id=a.user_id WHERE ct.Head_id='$head' AND c.id IS NULL GROUP BY a.upto ORDER BY upto DESC LIMIT 1");

        if(mysql_num_rows($upto) >0) {

        while ($row = mysql_fetch_array($upto)) {
            $recp = array();
        $recp["offer_name5"]=$row["offer_name"];
        $recp["shop_name5"]=$row['shop_name'];
        $recp["cost5"]=$row['cost'];
        array_push($response["abc"], $recp);

        }
        }       
        }
            $object = (object) array_filter((array) $response);
            $result = json_encode($object);
            echo $result;
                }
            }


        ?>
假设您这样做:

$object = (object) array_filter((array) $response); 
$result = json_encode($object); 
  • 如果数组是关联的,则不需要在json编码之前强制转换为对象,因为json_encode将始终将关联数组放入对象中
  • array_filter从等于false的数组中删除所有条目(空数组不是false)
  • 因此,您应该向筛选器添加自定义回调:

    function notemptyarray($var) {
        return is_array($var) && count($var) > 0;
    } 
    
    $arr = array_filter((array) $response, "notemptyarray");
    $result = json_encode($arr);
    
    解决了

    已删除“对象”并仅使用“数组\过滤器”

    我就是这么做的

    而不是

    $object=(object)数组\过滤器((数组)$response); $result=json_encode($object)

    我把它改成

    $object=array\u filter((array)$response)


    通过修改php代码,它起到了作用。

    在序列化数据之前使用array\u filter()。似乎您对多个字典进行了json\u编码。在生成代码中解决这个问题。一旦添加了缩进以使其看起来更清晰,JSON看起来就无效了。我有5个不同的查询和不同的结果集,我正在从所有这5个结果集生成单个响应代码。有可能吗?谢谢你@steven。。我是按照你解释的方式做的。再次感谢。