作为数组输出的PHP代码

时间:2016-02-01 21:26:53

标签: php arrays json

我正在尝试创建一个以下列格式输出json的php脚本,但我似乎并没有绕过它。

{
  "authentication_credentials": {
    "api_key": "hybghhmimjij48fr847gt4fdf847v8",
    "app_secret": "84984ff48448gf484198dfs818"
  },
  "sms_payload": [
    {
      "message": "Test Message",
      "msisdn": "123456789",
      "third_party_message_id": "samplestring"
    }
  ],
  "sender_id": "12345"
}

这是我试图转换json的PHP代码

$api_key = "hybghhmimjij48fr847gt4fdf847v8";
$app_secret = "84984ff48448gf484198dfs818";
$message = "Test Message";
$msisdn = '123456789';
$third_party_message_id = 'samplestring';
$sender_id = '12345';


$data .= array('api_key'=>$api_key,'app_secret'=>$app_secret);
$data .= array('message'=>$message,'msisdn'=>$msisdn,'third_party_message_id'=>$third_party_message_id);
$data .= array('sender_id'=>$sender_id);


$data_string = json_encode($data);
echo  $data_string;

我应该在代码中添加哪些其他的twerks以使其以上述格式输出json。

2 个答案:

答案 0 :(得分:3)

你可以这样编码:

$data['authentication_credentials'] = array('api_key'=>$api_key,'app_secret'=>$app_secret);

$data['sms_payload'] = array('message'=>$message,'msisdn'=>$msisdn,'third_party_message_id'=>$third_party_message_id); 

$data['sender_id'] = $sender_id;

echo json_encode($data);

一些解释

根据您所需的json结果,您需要使用associative array非连接变量。

更新1:

检查完最后的评论后:

这在技术上是我想要实现的目标。 谢谢它解决了我的问题。 - nick 7小时前

我正在为未来的访问者添加此解决方案作为更新1:

$data['sms_payload'] = array(
                        array(
                        'message'=>$message,
                        'msisdn'=>$msisdn,
                        'third_party_message_id'=>$third_party_message_id
                    )); 

<强>结果:

"sms_payload":[{"message":"test","msisdn":"111","third_party_message_id":13213}]

答案 1 :(得分:0)

使用选项JSON_PRETTY_PRINT

$data_string = json_encode($data, JSON_PRETTY_PRINT);
echo  $data_string;
关于此命令的

More

修改

我怎么看,你有数据准备问题,你必须写这样的东西:

$data = (object)[
    "authentication_credentials" =>
        (object)[
        'api_key' => $api_key,
        'app_secret' => $app_secret
    ],
    //...
];