如何解决如何从包含不同值的两个数组中制作一个数组
我有两个数组,一个叫做fetched_services
,另一个叫fetched_companies
,它们看起来像这样:
获取的服务
(
[1] => Array
(
[id] => 11
[child_services] => Array
(
[0] => Array
(
[id] => 153
)
[1] => Array
(
[id] => 137
)
[2] => Array
(
[id] => 138
)
)
)
)
fetched_companies
(
[0] => stdClass Object
(
[services] => Array
(
[0] => 25
[1] => 102
)
)
)
我要实现的目标是得到一个像fetched_services
这样的数组,但是只有child_services
且ID为fetched_companies["services"]
。
我尝试过的是:
$services = [];
$isFound = false;
foreach ($fetched_services as $fetched_service) {
foreach ($fetched_service["child_services"] as $fetched_child_service) {
$fetched_service["child_services"] = [];
foreach ($fetched_companies as $fetched_company) {
if( (in_array($fetched_child_service["id"],$fetched_company->services)) ) {
$fetched_service["child_services"][] = $fetched_child_service;
$isFound = true;
}
}
if($isFound) {
$services[] = $fetched_service;
$isFound = false;
}
}
}
这将输出:
Array
(
[0] => Array
(
[id] => 11
[child_services] => Array
(
[0] => Array
(
[id] => 116
)
)
)
[1] => Array
(
[id] => 11
[child_services] => Array
(
[0] => Array
(
[id] => 117
)
)
)
)
如您所见,结果数组具有两个包含相同id的数组,但child_services
不同。
我最终想要得到的是这样:
Array
(
[0] => Array
(
[id] => 11
[child_services] => Array
(
[0] => Array
(
[id] => 116
)
)
(
[0] => Array
(
[id] => 117
)
)
)
)
我在这里做错了什么?谢谢!
解决方法
您的问题尚不清楚(如果/当您澄清时,我会编辑/删除此问题,请参阅上面的评论),但是您可能可以通过仅保留其中提到的服务来使用array_filter
列表(通过in_array
):
$result = array_filter(
$fetched_services['child_services'],fn(array $child_service): bool => in_array($child_service['id'],$fetched_companies[0]->services,true)
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。