创建具有不确定级别的动态多维数组

时间:2017-02-08 18:49:35

标签: php multidimensional-array nested

我正在尝试建立一个联盟计划。 Everythig工作正常,除非我想绘制结构。

我有一些脚本正在绘制一个多维数组,如图(http://prnt.sc/e5pmic),但要做到这一点,它需要读取已经构建的多维数组。

我的问题是,我没有建立该阵列,因为所有数据都在数据库中,因此我尝试使用数据库中的所有数据来构建它,但这很难,因为那里有没有限制水平。

因此,如果我必须添加新级别,我不知道如何将[] dinamically添加到数组中。

数组的一个例子是这样的:

$structure = [
    "Main Member" => [
        "UserName" => "user1",
        "Sponsor" => "",
        "Referrers" => [
            [
                "UserName" => "user2",
                "Sponsor" => "user1",
                "Referrers" => []
            ],
            [
                "UserName" => "user3",
                "Sponsor" => "user1",
                "Referrers" => [
                    [
                        "UserName" => "user4",
                        "Sponsor" => "user3",
                        "Referrers" => []
                    ],
                    [
                        "UserName" => "user5",
                        "Sponsor" => "user3",
                        "Referrers" => []
                    ]
                ]
            ],
            [
                "UserName" => "user6",
                "Sponsor" => "user1",
                "Referrers" => []
            ] 
        ]
    ]
];

但如果在数据库中存在数据,它可能会更深。

我只需使用此功能构建2个级别:

private function getMemberData($field, $value) 
{
    $select = ['id', 'Matrix', 'FirstName', 'EntityTypeID', 'Active', 'Sponsor'];
    $this->join('members', 'entities', 'EntityID', 'id', 'LEFT');
    $this->where($field, $value);
    $result = $this->get(self::TB_USERS, $select, null);

    # If I got more than 1 member, those are referrers
    if(count($result) > 1) {
        $array = [];
        foreach($result as $member) {
            $array[] = $member;
        }

        return $array;
    }

    return $this->get(self::TB_USERS, $select, null)[0];
}  

$字段可以是" UserName"或者"赞助商",这将取决于我是从主要会员还是从推荐人处获取数据。

0 个答案:

没有答案