加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

我如何得到json响应从PHP格式下?

发布时间:2020-12-11 23:51:18 所属栏目:MySql教程 来源:网络整理
导读:我有两个表,在年度选择中有两列是在那里,在testtable2中有三列是基于第一个表id在第二个表中使用.我想使用php,这两个表显示json如下所示. yearselection: id year 6 2014-2015 2 2010-2011 3 2011-2012 4 2012-2013 5 2013-2014 1 2009-2010 7 2015-2016 te

我有两个表,在年度选择中有两列是在那里,在testtable2中有三列是基于第一个表id在第二个表中使用.我想使用php,这两个表显示json如下所示.

yearselection:

   id   year
    6   2014-2015
    2   2010-2011
    3   2011-2012
    4   2012-2013
    5   2013-2014
    1   2009-2010
    7   2015-2016

testtable2:

id   name    yearselection
1    test1        2
2    test2        1
3    test3        1 
4    test4        1
5    test5        2
6    test6        3 

我希望以json格式显示如下:

   {
    "2009-2010": [

        {
            "id": "2","name": "test2"
        },{
            "id": "3","name": "test3"
        },{
            "id": "4","name": "test4"
        }

    ],"2010-2011": [

        {
            "id": "1","name": "test1"
        },{
            "id": "5","name": "test5"
        }

    ],"2011-2012": [

        {
            "id": "6","name": "test6"
        }

    ]
}

mycode的

public function actionArchives()
    {
    //echo $keyword=$_POST['keyword'];

        $query= Yii::app()->db->createCommand("select * from yearselection ORDER BY id ASC")->queryAll();
        $arr = array();
        if(count($query) > 0) {

        foreach ($query as $queryElement) {

        $query2= Yii::app()->db->createCommand("select * from testtable2 where yearselection='".$queryElement['id']."' ORDER BY id ASC")->queryAll();




        $arr[] = $queryElement;
        }
        }

        # JSON-encode the response
        $json_response = json_encode($arr);

        // # Return the response
        echo $json_response;


    //exit;
    }
最佳答案 你是先写这样的查询

public function actionArchives()
{
//echo $keyword=$_POST['keyword'];

    $query= Yii::app()->db->createCommand("SELECT y.year,y.id as year_id,t.id as test_id,t.name 
    FROM yearselection as y JOIN testtable2 as t
    ON y.id=t.yearselection")->queryAll();
    $arr=array();
    if(count($query) > 0)
    {
      $arr = $query;
     // Now you run loop to change indexes of array,i.e.
      $count=count($arr);
      for($i=0;$i<$count;$i++)
      {
        $year=$arr[$i]['year'];
        $arr[$year]=$arr[$i];
        unset($arr[$i]);
      }
     // Now your array has index as your year column,}

    # JSON-encode the response
    $json_response = json_encode($arr);

    // # Return the response
    echo $json_response;


//exit;
}

现在,一旦您编写了上述查询,您将获得包含year,year_id,test_id,name列的数据

现在你已经在变量$arr []中完成了数组中的整个数据(不接触$query varible来保存查询数据).

现在你可以做简单的json_encode($arr);

注意:-

Please don’t hit DB in a loop as if your loop length is suppose 100 then it
will hit DB 100 times. So you can apply JOINS in those cases so that
it will take data from 2 tables based on a single parameter.

希望这能解决您的疑问.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读