PHP - 尝试制作类似JSON的数组并让人感到困惑

时间:2013-03-25 21:45:35

标签: php json

我正在使用PHP并尝试创建一个类似于这样的数组:

{
    "aps" : {
        "alert" : "Hey"
    },
    "custom_control" : {
        "type" : "topic_comment",
        "object":{
            "topic_id":"123",
            "topic_section":"test"
                        "plan_id":"456"
        }
    }
}

到目前为止,我有类似

的内容
$message = array('aps'=>array('alert'=>$some_variable));

但我很困惑如何在此之后将“custom_control”的值放入此数组中。任何人都可以建议如何从我现有的PHP?

谢谢!

7 个答案:

答案 0 :(得分:5)

这是你的意思吗?

<?php
    $some_variable = "Hey";
    $myArray = array(
        "aps" => array(
            "alert" => $some_variable
        ),
        "custom_control" => array(
            "type" => "topic_comment",
            "object" => array(
                "topic_id" => "123",
                "topic_section" => "test",
                "plan_id" => "456"
            )
        )
    );
?>

答案 1 :(得分:3)

这是一种发现您需要做的简单方法。

  1. 创建您的JSON对象。
  2. 将其用作json_decode函数的输入。
  3. 使用此输出作为var_export()
  4. 的输入

    假设您已将JSON分配给$ json_object,请使用:

    var_export(json_decode($json_object, true));
    

答案 2 :(得分:1)

如果您更习惯在JSON中构建对象,则可以使用php中包含的JSON解析器。此外,JSON定义了Javascript对象,而不是数组(尽管您可以使用类似{myArray : [1,2,3]}

的内容在JSON中定义数组

如果你想要的话,试试这个: http://php.net/manual/en/function.json-decode.php

答案 3 :(得分:1)

如果您已经创建了初始消息数组(根据您的问题),那么您将执行类似的操作。

$message["custom_control"] = array(
    "type" => "topic_comment",
    "object" => array(
        "topic_id" => "123",
        "topic_section" => "test",
        "plan_id" => "456"
    )
)

您可以通过这种方式在$ message中创建所需的任何节点。

答案 4 :(得分:1)

您尝试创建的不是数组,而是对象。

尽量不要将它构建为数组而是构建对象。

$obj = new stdClass();
$obj->aps = new stdClass();
$obj->aps->alert = 'Hey';
$obj->custom_control = new stdClass();
$obj->custom_control->type = 'topic_comment';
$obj->custom_control->object = new stdClass();
$obj->custom_control->object->topic_id = '123';
$obj->custom_control->object->topic_section = 'test';
$obj->custom_control->object->plan_id = '456';
$json = json_encode($obj); 

答案 5 :(得分:1)

$array = array();
$array['aps'] = "alert";

$array['custom_control'] = array();
$array['custom_control']['type'] = "topic_comment";

$array['custom_control']['object'] = array('topic_id' => '123', 
                                           'topic_section' => 'test', 
                                           'plan_id' => '456');

答案 6 :(得分:1)

我认为你需要这样的东西:

$message =array( "aps" =>array("alert"=>"Hey"),
                  "custom_control" => array(
                                              "type" => "topic_comment",
                                              "object" => array(
                                                                 "topic_id"=>"123",
                                                                 "topic_section"=>"test",
                                                                 "plan_id"=>"456"
                                               )
                                      )
            );