我正在使用laravel制作一个API,查询数据库并显示一个简单的输出。现在我的查询是这样的:
$name = new TableName() ; //An object which is storing tablename
$result=DB::table($name->getMyTableName()) // Getting the tablename
->select()
->where('id','=',1)->orWhere('id','=',2)
->get();
这将获取id为1和2的两条记录当我将它们传递到控制器时,json输出是这样的
[
{
"id": "1",
"question": "This is",
"question_main": "sample1",
"option_1": "opt_1",
"option_2": "opt_1",
"option_3": "opt_1",
"option_4": "opt_1",
},
{
"id": "2",
"question": "This is",
"question_main": "sample2",
"option_1": "opt_1",
"option_2": "opt_2",
"option_3": "opt_3",
"option_4": "opt_4",
}
]
现在我想要的是代替选项,我有这样的东西:
选项:
{
1=>"opt_1",
2=>"opt_2",
3=>"opt_3",
4=>"opt_4",
}
现在我尝试的是:
foreach ($result as $results)
{
$final_result= array_add($final_result, 'id', $results->id);
$final_result= array_add($final_result, 'question', $results->question);
$final_result= array_add($final_result, 'question_main', $results->question_main);
$final_result= array_add($final_result, 'options', array(
[
1 => $results->option_1,
2 => $results->option_2,
3 => $results->option_3,
4 => $results->option_4,
]
));
}
return json_encode($final_result,JSON_PRETTY_PRINT);
这很好地解决了这个问题,然而,你可能已经发现键值对可以有唯一的键,所以它只会存储id=2(后者)。我很困惑该怎么做。我试过多维数组,但我想我不能得到正确的概念。如有任何建议,请提前感谢
您可以使用foreach中的键执行以下操作:
$final_result = [];
foreach ($result as $key => $results)
{
$final_result[$key] = [
'id' => $results->id,
'question' => $results->question,
'question_main' => $results->question_main,
'options' => [
1 => $results->option_1,
2 => $results->option_2,
3 => $results->option_3,
4 => $results->option_4
]
];
}
return json_encode($final_result,JSON_PRETTY_PRINT);
这样就可以了。
$arrayToBePrinted = [];
foreach ($result as $results)
{
$final_result= array_add($final_result, 'id', $results->id);
$final_result= array_add($final_result, 'question', $results->question);
$final_result= array_add($final_result, 'question_main', $results->question_main);
$final_result= array_add($final_result, 'options', array(
[
1 => $results->option_1,
2 => $results->option_2,
3 => $results->option_3,
4 => $results->option_4,
]
));
$arrayToBePrinted[] = $final_result;
}
return json_encode($arrayToBePrinted,JSON_PRETTY_PRINT);