我这里有数据:
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
)
)
我需要将此数组分为两组:第一组 - 所有拥有一个 SiteID 的 OwnerAID,第二组所有拥有多个 SiteID 的 OwnerAID。有可能做到吗?结果应如下所示:
以下是在一个大数组中拥有一个SiteID的OwnerAID组:
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
)
)
)
}
而在这里,OwnerAID 在另一个大数组中拥有多个 SiteID:
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
)
)
)
有人建议我这段代码,但我已经修改了它,我做了一些研究来修改这段代码。请帮助我完成这种结果。请耐心回答我的问题,我只是PHP编程世界的初学者,这是代码:
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);
}
请帮助我,提前谢谢你。我希望有人能帮助我得出这样的结果。请以正确的方式指导我。
这将返回您想要的内容。
<?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);
?>
抱歉,我发现阅读代码有点困难,所以我为您编写了一个。
$new_array=array();
foreach($old_array as $site)
{
$siteList=array();
if(isset($new_array[$site['OwnerAID']]['Sites']))
$siteList=$new_array[$site['OwnerAID']]['Sites'];
$new_array=array_merge($new_array,array($site['OwnerAID']=>array_merge($siteList,$site['SiteID']=>array('Sites'=>array(
'SiteID'=>$site['SiteID'],
'Balance'=>$site['Balance'],
'MinBalance'=>$site['MinBalance'],
'MaxBalance'=>$site['MaxBalance'],
'OwnerAID'=>$site['OwnerAID'],
'GroupID'=>$site['GroupID'],
'Deposit'=>$site['Deposit'],
'Redemption'=>$site['Redemption'],
'Reload'=>$site['Reload'],
)))));
}