I'm trying to build an affiliate program. Everythig is working fine, except when I want to draw the structure.
I have some script which is drawing a multidimensional array like a diagram (http://prnt.sc/e5pmic) but to do that, it needs to read a multidimensional array already built.
My problem is, I don't have that array already built because all data is in the DB so I'm trying to build it with all data in DB but it is quite difficult because there's no limit levels.
So I don't know how to add [ ] dinamically to the array if I have to add new level.
An example of array is like this:
$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" => []
]
]
]
];
But it can be deeper if exist data on database.
Just I got to build 2 levels with this function:
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];
}
The $field can be "UserName" or "Sponsor", it will depends if I'm getting data from Main Member or from Referrers.