我需要转换以下结果。我使用PHP生成这个JSON数组,但现在我需要将相同的结果放入一个花括号中。下面是我生成JSON的PHP代码。
$arr = array();
#If no data was returned, check for any SQL errors
if ($res == false)
{
echo 'Query not Executed : '. die(print_r(sqlsrv_errors(), TRUE));
}
else
{
while($obj = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC))
{
$arr[] = array(
'code' => array_search($obj['name'], $countries_iso),
'total' => $obj['Total']
);
}
}
header("Content-type: application/json");
#Output the JSON data
print (json_encode($arr));
[
{
code: "AF",
total: 1
},
{
code: "DZ",
total: 1
},
{
code: "AS",
total: 2
}
]
{
"AF":1
"DZ": 1,
"AS": 2
}
答案 0 :(得分:2)
我想你想要$arr[array_search($obj['name'], $countries_iso)] = $obj['Total'];
您的错误是每次向原始阵列添加内容时都声明了一个新数组。这样就可以指定正确的方式:)
试试这段代码:
$arr = array();
#If no data was returned, check for any SQL errors
if ($res == false)
{
echo 'Query not Executed : '. die(print_r(sqlsrv_errors(), TRUE));
}
else
{
while($obj = sqlsrv_fetch_array($res, SQLSRV_FETCH_ASSOC))
{
$arr[array_search($obj['name'], $countries_iso)] = $obj['Total'];
}
}
header("Content-type: application/json");
#Output the JSON data
//$json = json_encode($arr);
$json = json_encode($arr);
答案 1 :(得分:1)
这样做:
$arr[array_search($obj['name'], $countries_iso)] = $obj['Total'];
但是,如果将查询限制为仅返回行array_search($obj['name'], $countries_iso)
,则可以删除整个WHERE name IN (list of $countries_iso)
。查找SQL Server的WHERE
和IN
。
答案 2 :(得分:0)
您需要将数据结构转换为associative array,其中code
中当前存储的值将成为关键,total
中存储的值将为值。
如果您发布生成当前JSON对象的代码
,我将能够提供更好的帮助