使用php嵌套查询创建JSON对象

时间:2012-06-23 19:25:03

标签: php ajax json

我想在PHP中使用tow查询创建JSON对象,然后使用ajax检索此对象。第一个将返回所有用户的位置。第二个嵌套查询将返回与特定用户关联的所有任务。结构必须是这样的:

{
[
user1 : { "name" : "name1"
          "task" : [ { "taskname":"taskname1.1" , "date":"1-1" } ,

                 { "taskname":"taskname1.2" , "date":"1-1"  }
        }
} ,

user2: { "name" : "name2"
      "task" : [ { "taskname":"taskname2.1" , "date":"2-2" } ,

                 { "taskname":"taskname2.2" , "date":"2-2"  }
               ]
  }
...
]
}

我的问题是:

当我尝试解析每个用户的任务时,我发现:

每个用户的任务都与之前用户的任务合并。

那么使用php创建具有相同结构的JSON对象的最佳方法是什么?

---更新---

感谢所有回答我的人。但是我需要知道如何动态创建它,我知道如何在静态中执行此操作并且我之前正确使用json_encode(),这不是我的问题。我非常感谢你的回答,但这不是我需要的,我认为问题出在我的问题中。

2 个答案:

答案 0 :(得分:1)

$array=array(
    'user1'=>array(
                      'tasks'=>array(
                               'task1'=>'whatever',
                               'task2'=>'whatever',
                               'task3'=>'whatever'
                               ),
                      'date'=>'whatever'
                  ),

    'user2'=>array(
                      'tasks'=>array(
                               'task1'=>'whatever',
                               'task2'=>'whatever',
                               'task3'=>'whatever'
                               ),
                      'date'=>'whatever'
                  ),
    'user3'=>array(
                      'tasks'=>array(
                               'task1'=>'whatever',
                               'task2'=>'whatever',
                               'task3'=>'whatever'
                               ),
                      'date'=>'whatever'
                  )    
);

然后使用JSON编码发送JSON字符串。

echo json_encode($array);

答案 1 :(得分:0)

我同意powerbuoy在php中创建一个带键值对的数组:

$obj = array( 
             "User 1" => array( 
                 "name" => "name1", 
                 "tasks" => array(
                     array("taskname" => "t1", "date" => "1-1"),
                     array("taskname" => "t2", "date" => "1-1")
                 )
             ),
             "User 2" => array(...........)

然后运行json_encode($obj);

我觉得这样的事情对你有用