JSON - 构建数据

时间:2015-08-07 12:41:43

标签: php arrays json data-structures

基本上,我正在尝试格式化以下内容:

我有一系列用户,他们是不同社区的一部分,每个社区都有一系列要完成的任务但是社区中的一些任务只与某些用户有关。像这样:

Community 1
Members: Joe, James 

Tasks: Task 1, Task 2, Task 3

Assigned: Task 1 -> Joe, Task 3 -> James 

Community 2:
Members: James

Tasks: Talk 1, Task 14, Task 15 

Assigned: Task 1 -> Joe, Task 14 -> James 

所以基本上。 Joe必须完成任务1,而James必须完成任务3。

我需要一个数组(可以编码为json)来存储社区ID以及他们已经完成的所有任务,但是应该可以轻松访问它以获得社区和他们已完成的任务。

我有一个当前存在的社区列表,我想显示已完成的所有任务(由特定用户),具体取决于社区ID,以及此,我还想添加和删除来自“任务”类别的内容,因此需要一种轻松访问这些成员的方法

到目前为止,我已经提出了以下建议:

$progress = array (

    "communities" => array(
        "id" => 1, 
        "tasks" => array(
            1 => "completed",
            2 => "completed"
        ),

        "id" => 2,
        "tasks" => array(
            150 => "completed",
            140 => "completed"
        )
    ),
);

但是我不知道这是否是正确的数组样式,因为我不知道当我需要添加/删除或显示社区剩余的任务总量时会有多复杂

更新:

我正在使用的这个数组:

$x = array(

1 => array(
    1, 
    2, 
    3, 
    4,
),

2 => array(
    3,
    5, 
    6,
    10
)

);

然后产生这种JSON:

{"1":[1,2,3,4],"2":[3,5,6,10]}

这是对的吗?我是否可以添加和删除节点,以及向此添加顶层部分?

1 个答案:

答案 0 :(得分:1)

代码示例作为对您的评论的回复

$progress = array (
    "communities" => array(
        1 => array(
            "tasks" => array(
                1 => array("status" => "completed", "assigned_users" => array("James", "Joe")), 
                2 => array("status" => "pending", "assigned_users" => array("James"))
            ),
        ),
        2 => array(
            //Content of task2 
    )
    )
);

使用这样的扩展模型,您将能够:

  • 将任务分配给一个或多个用户
  • 从特定任务中删除用户
  • 了解哪些用户正忙或可用
  • 计算任务并获取指定的资源(用户)

获取第一个社区的任务1

echo $progress['communities'][1]['tasks'][1];

走社区集合

foreach ($progress['communities'] as $c) {
    //Browse the tasks
    foreach ($c['tasks'] as $t) {
        var_dump($t);
    }
}