[英]Multidimensional array in php( have same key different values) how can I create a new name for the key?
[英]How to create a new key and store array values in a multidimensional way PHP
我在这里有数据:首先,我的第一个函数getsiteaccounts()的结果
Array
(
[0] => Array
(
[SiteID] => 2
[AID] => 5
)
[1] => Array
(
[SiteID] => 2
[AID] => 3
)
[2] => Array
(
[SiteID] => 6
[AID] => 4
)
第二个函数的结果叫做bindGHComponentsToSites()
Array
(
[2] => Array
(
[SiteID] => 2
[Balance] => 19000.00
[MinBalance] => 100000.00
[MaxBalance] => 1000000.00
[OwnerAID] => 5
[GroupID] => 1
[Deposit] => 1500
[Reload] => 1000
[Redemption] => 1000
)
)
然后,添加[CorpAID]的密钥指向OwnerAID的列表。 顺便说一句,OwnerAID和AID是相同的。 如您所见,SiteID => 2由两个OwnerAID => 5和3拥有。这应该是结果:
Array([0])=> Array (
[SiteID] => 2
[Balance] => 19000.00
[MinBalance] => 100000.00
[MaxBalance] => 1000000.00
[OwnerAID] => 5
[GroupID] => 1
[Deposit] => 1500
[Reload] => 1000
[Redemption] => 1000
[CorpAID] => Array(
[0] => 5
[1] => 3
)
)
)
不应打印SiteID => 6,因为它仅由一个AID拥有。 有可能做到吗? 请以正确的方式指导我。 先感谢您。
您可以使用几个foreach
循环来执行所需的操作:
<?php
$siteAccounts = array(
array('SiteID'=>2, 'AID'=>5),
array('SiteID' => 2, 'AID' => 3),
array('SiteID' => 6, 'AID' => 4)
);
$componentsToSites = array(array(
'SiteID' => 2,
'Balance' => 19000.00,
'MinBalance' => 100000.00,
'MaxBalance' => 1000000.00,
'OwnerAID' => 5,
'GroupID' => 1,
'Deposit' => 1500,
'Reload' => 1000,
'Redemption' => 1000
));
foreach ($componentsToSites as &$site) {
$aids = array();
foreach ($siteAccounts as $acct) {
if ($acct['SiteID'] === $site['SiteID'])
$aids[] = $acct['AID'];
}
$site['CorpAID'] = $aids;
}
print_r($componentsToSites);
编辑:
我最初的答案使用array_walk
而不是foreach
,但是由于兼容性问题,我切换了它。 这是使用array_walk
的原始代码片段:
array_walk($componentsToSites, function (&$site) use ($siteAccounts) {
$aids = array();
array_walk($siteAccounts, function ($acct) use ($site, &$aids) {
if ($acct['SiteID'] === $site['SiteID'])
$aids[] = $acct['AID'];
});
$site['CorpAID'] = $aids;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.