I have data here:
Array
(
[3] => Array
(
[SiteID] => 3
[Balance] => 94000.99
[MinBalance] => 100000.00
[MaxBalance] => 500000.00
[OwnerAID] => 17
[GroupID] => 1
[Deposit] => 459000
[Redemption] => 703576
[Reload] => 169100
)
[2] => Array
(
[SiteID] => 2
[Balance] => 19000.00
[MinBalance] => 100000.00
[MaxBalance] => 1000000.00
[OwnerAID] => 83
[GroupID] => 1
[Deposit] => 1500
[Redemption] => 1000
[Reload] => 1000
)
[139] => Array
(
[SiteID] => 139
[Balance] => 855100.00
[MinBalance] => 100000.00
[MaxBalance] => 1000000.00
[OwnerAID] => 23
[GroupID] => 1
[Deposit] => 0
[Redemption] => 0
[Reload] => 0
)
)
I need to group this arrays in to two groups: First group - all OwnerAID owning one SiteID and the Second group all OwnerAID owning more than one SiteID. Is it possible to make it? The result should be shown like this:
here's the group of OwnerAID owning one SiteID in a one big array:
Array
(
[17] => Array
(
[Sites] => Array
(
[0] => Array
(
[SiteID] => 3
[Balance] => 94000.99
[MinBalance] => 100000.00
[MaxBalance] => 500000.00
[OwnerAID] => 17
[GroupID] => 1
[Deposit] => 459000
[Redemption] => 703576
[Reload] => 169100
)
)
)
}
while here, OwnerAID owning more than one SiteID in another one big array:
Array
(
[83] => Array
(
[Sites] => Array
(
[0] => Array
(
[SiteID] => 2
[Balance] => 19000.00
[MinBalance] => 100000.00
[MaxBalance] => 1000000.00
[OwnerAID] => 83
[GroupID] => 1
[Deposit] => 1500
[Redemption] => 1000
[Reload] => 1000
)
[1] => Array
(
[SiteID] => 149
[Balance] => 150000.00
[MinBalance] => 100000.00
[MaxBalance] => 250000.00
[OwnerAID] => 83
[GroupID] => 1
[Deposit] => 0
[Redemption] => 0
[Reload] => 0
)
)
)
Someone suggest me this code but I already modified it, I do some research to modify this code. Please help me to accomplish this kind of result. Please be patient in answering my question, I'm just a beginner in a world of programming in PHP.here's the code:
public function groupIndividualAndAggregateSites()
{
$owners = array();
foreach($this->combined as $key => $value) {
$owner_id = $value['OwnerAID'];
$site_id = $value['SiteID'];
if (array_key_exists($owner_id,$owners)) {
// He has one or more sites already?
if(is_array($owners[$owner_id])) {
array_push($owners[$owner_id],$site_id);
} else {
// User already has one site.
// Make an array instead and add old and new siteID
$old_site_id = $owners[$site_id];
$owners[$owner_id] = array_merge((array)$value, array($old_site_id));
}
} else {
$owners[$owner_id] = array($value,'Sites'=> array($site_id));
}
}
print_r($owners);
}
Please help me, and Thank you in advance. I hope someone could help me to come up with this kind of result. Please guide me in proper way.
This returns exactly what you want.
<?php
//Array declaration
$arr = Array
(
3 => Array
(
"SiteID" => 3,
"Balance" => 94000,
"MinBalance" => 100000.00,
"MaxBalance" => 500000.00,
"OwnerAID" => 17,
"GroupID" => 1,
"Deposit" => 459000,
"Redemption" => 703576,
"Reload" => 169100,
),
2 => Array
(
"SiteID" => 2,
"Balance" => 19000.00,
"MinBalance" => 100000.00,
"MaxBalance" => 1000000.00,
"OwnerAID" => 83,
"GroupID" => 1,
"Deposit" => 1500,
"Redemption" => 1000,
"Reload" => 1000,
),
139 => Array
(
"SiteID" => 139,
"Balance" => 855100.00,
"MinBalance" => 100000.00,
"MaxBalance" => 1000000.00,
"OwnerAID" => 83,
"GroupID" => 1,
"Deposit" => 0,
"Redemption" => 0 ,
"Reload" => 0
),
);
//End of declaration;
//Too lazy for other comments, sorry xD
foreach ($arr as $key => $value) {
$Newarr[$value["OwnerAID"]][] = $value;
}
foreach ($Newarr as $key => $value) {
foreach ($value as $key2 => $value2) {
if (count($value) == 1)
$arrOneSite[$value2["OwnerAID"]]["Sites"][] = $value2;
else
$arrMoreThenOneSite[$value2["OwnerAID"]]["Sites"][] = $value2;
}
}
echo "<pre>";
print_r($arrOneSite);
print_r($arrMoreThenOneSite);
?>