PHP Json帮助需要吗?

时间:2015-07-07 03:31:53

标签: php json

我需要转换以下结果。我使用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));

以上PHP代码的输出:

 [
  {
   code: "AF",
   total: 1
  },
  {
   code: "DZ",
   total: 1
  },
  {
   code: "AS",
   total: 2
  }
 ]

但我希望显示如下结果:

 {
  "AF":1
  "DZ": 1,
  "AS": 2
 }

3 个答案:

答案 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的WHEREIN

答案 2 :(得分:0)

您需要将数据结构转换为associative array,其中code中当前存储的值将成为关键,total中存储的值将为值。

如果您发布生成当前JSON对象的代码

,我将能够提供更好的帮助