我在交叉比较两个数组时遇到了一些麻烦。我有一个为我建立一组组的函数。然后我称之为
$groups = getGroups();
以上调用将输出如下内容
array(144) {
[0]=>
array(5) {
["GroupName"]=>
string(4) "Group One"
["GroupEmail"]=>
string(25) "groupOne@someEmail.com"
[0]=>
array(1) {
["GroupMember"]=>
string(13) "John Doe"
}
[1]=>
array(1) {
["GroupMember"]=>
string(11) "Jane Murray"
}
[2]=>
array(1) {
["GroupMember"]=>
string(10) "Julie Wise"
}
}
...
}
然后我再做一次调用,通过
获取一些用户数据$users = getUsers();
这个数组的输出是这样的
array(66) {
[0]=>
array(2) {
["UserName"]=>
string(14) "John Doe"
["email"]=>
string(27) "johnd@someEmail.com"
}
...
}
我现在要做的是绑定2个数组。我的目标是获得类似以下输出的内容
Group One: groupOne@someEmail.com, johnd@someEmail.com, janeMurray@someEmail.com, julieWise@someEmail.com
所以上面是
GroupName: GroupEmail, GroupMember->email
所以我需要获取GroupMember组,与我的users数组中的UserName交叉检查,以获取他们的电子邮件。
这样的事情会成为可能吗?
由于
答案 0 :(得分:1)
这应该适用于您的阵列。不明白你想要什么,但希望我猜对了。
foreach($groups as $groupKey=>$groupData)
{
if(is_array($groupData))
{
foreach($groupData as $memberKey=>$memberData)
{
$res = array_search($memberData['GroupMember'],array_column($users, 'UserName'));
if($res !== false) {
$groups[$groupKey][$memberKey]['email'] = $users[$res]['email'];
}
}
}
}
这将作为输出:
array(3) {
["GroupName"]=>
string(9) "Group One"
["GroupEmail"]=>
string(22) "groupOne@someEmail.com"
[0]=>
array(2) {
[0]=>
array(2) {
["GroupMember"]=>
string(8) "John Doe"
["email"]=>
string(19) "johnd@someEmail.com"
}
[1]=>
array(2) {
["GroupMember"]=>
string(10) "Julie Wise"
["email"]=>
string(19) "julie@someEmail.com"
}
}
}
希望这有帮助。
最好的祝福,
M.I。