【问题标题】:RestAPI designs in PHP - Create Object of Object instead Array of ObjectsPHP 中的 RestAPI 设计 - 创建对象对象而不是对象数组
【发布时间】:2017-05-01 06:17:15
【问题描述】:

尝试创建对象的对象,而不是我的代码正在创建对象数组。

我的程序代码

$output['result'] =[];
$query = "SELECT DISTINCT ti.`test_id`, ti.`name`, ti.`subject_id`, ti.`created_timestamp`, ti.`trainer_id`, ti.`class`, ti.`max_marks` , si.`name` as testname, ts.`validity` FROM `test_info` ti, `subject_info` si , `test_schools` ts WHERE ti.`subject_id` = si.`subject_id` AND ts.`test_id` = ti.`test_id` ";
$sth   = $dbh->prepare($query);
if (!$sth->execute()) {
    $dbh = null;
    throw new Exception(-1);
}
$rows = $sth->fetchALL(PDO::FETCH_ASSOC);
foreach($rows as $row){
    $keys = $row['test_id'];
    $output['result'][$keys] = [];  //Creating key 
    array_push($output['result'][$keys],$row); //Provide value to key 
}
echo json_encode($output);

这里我每次在循环中初始化一个数组,因为在 JSON 中将 key 设置为 test_id

$output['result'][$keys] = [];

这导致对象数组,那么我如何转换为对象的对象

程序的输出

{  
   "result":{  
      "1":[  
         {  
            "test_id":"1",
            "name":"Physics",
            "subject_id":"2",
            "created_timestamp":"2017-03-23 17:55:51",
            "trainer_id":null,
            "class":"8",
            "max_marks":"10",
            "testname":"Physics",
            "validity":"2018-04-14"
         }
      ],
      "2":[  
         {  
            "test_id":"2",
            "name":"phys",
            "subject_id":"2",
            "created_timestamp":"2017-03-24 16:29:33",
            "trainer_id":null,
            "class":"8",
            "max_marks":"5",
            "testname":"Physics",
            "validity":"2017-03-25"
         }
      ]
   }
}

预期输出:

{  
   "result":{  
      "1":{  
         "test_id":"1",
         "name":"Physics",
         "subject_id":"2",
         "created_timestamp":"2017-03-23 17:55:51",
         "trainer_id":null,
         "class":"8",
         "max_marks":"10",
         "testname":"Physics",
         "validity":"2018-04-14"
      },
      "2":{  
         "test_id":"2",
         "name":"phys",
         "subject_id":"2",
         "created_timestamp":"2017-03-24 16:29:33",
         "trainer_id":null,
         "class":"8",
         "max_marks":"5",
         "testname":"Physics",
         "validity":"2017-03-25"
      }
   }
}

【问题讨论】:

    标签: php arrays json api


    【解决方案1】:

    没有必要使用array_push,一个简单的foreach 循环就足以完成它。在您的代码行$output['result'][$keys] = []; 中,您创建了一个数组,然后您将其推入其中,只有赋值才能帮助您实现预期结果。

    将其更改为:

    foreach($rows as $row){
        $keys = $row['test_id'];
        $output['result'][$keys] = [];  //Creating key 
        array_push($output['result'][$keys],$row); //Provide value to key 
    }
    

    这个:

    foreach ($rows as $row)
    {
        $keys = $row['test_id'];
        $output['result'][$keys] =$row ;  //Creating key 
    }
    

    Try this code snippet herecontaining sample inputs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-14
      • 1970-01-01
      • 2017-04-12
      • 2017-09-02
      • 1970-01-01
      • 2019-09-01
      • 2012-01-17
      相关资源
      最近更新 更多