php - 我可以遍历一个元素数组,在每次迭代中发出一个 GET 请求,并以某种方式将 GET 结果映射到相应的元素吗?
问题描述
$summonerMatches 是一个对象,它包含一个名为 matches 的属性,其中包含一个对象数组。每个对象都包含有关比赛的信息,例如 gameId。
为了获取有关比赛的具体信息,我必须使用 gameId 发出 GET 请求。我目前正在遍历这些匹配项并发出 GET 请求以获取有关每个匹配项的特定信息,但是,我想知道如何将返回的信息链接到 $summonerMatches 对象内的相应匹配对象。在某种程度上,我想为每个匹配项创建一个新属性,然后将其分配给循环中 GET 请求的结果。
$getSummonerMatches = file_get_contents($region . "/lol/match/v4/matchlists/by-account/gvgxEQIJUq3bvbR_oasXkFHY7oJ5G2WViBGVCL1eKGJXsg?startIndex=0&endIndex=10&api_key=" . $apiKey);
$summonerMatches = json_decode($getSummonerMatches);
foreach ($summonerMatches->matches as $match) {
$getMatchInfo = file_get_contents($region . "/lol/match/v4/matches/" . $match->gameId . "?api_key=" . $apiKey);
$matchInfo = json_decode($getMatchInfo);
}
解决方案
我看不出有理由不matchInfo
使用从 API 检索到的数据为每个对象设置一个调用的新属性。
<?php
$getSummonerMatches = file_get_contents($region . "/lol/match/v4/matchlists/by-account/gvgxEQIJUq3bvbR_oasXkFHY7oJ5G2WViBGVCL1eKGJXsg?startIndex=0&endIndex=10&api_key=" . $apiKey);
$summonerMatches = json_decode($getSummonerMatches);
foreach ($summonerMatches->matches as &$match) {
$getMatchInfo = file_get_contents($region . "/lol/match/v4/matches/" . $match->gameId . "?api_key=" . $apiKey);
$matchInfo = json_decode($getMatchInfo);
$match->matchInfo = $matchInfo;
}
请注意,a&
已添加到 foreach。这样,$match
就成为对原始对象的引用,而不是副本,从而使我们的更改保持在foreach
.
对于更优雅的方法,您可以让这些对象中的每一个都属于一个实际的类,并使用一种方法来设置值,例如addMatchInfo($matchInfo)
,而不是直接创建属性。
推荐阅读
- xamarin.forms - 无法使用调试符号读取 ...\Release\90\android\assets\Xamarin.Essentials.dll'
- javascript - 更新 Mongoose 模型数组中的对象
- c# - 如何使用带有方法的接口
- apache-nifi - NIFI 1.9 流文件停留在集群模式
- c# - ASP.NET Core 中的动态轮播
- android - 如何修复 variant.getMergeResources()
- c++ - 转换矢量
> 到 QVector 或 QVector2D 或者其他的东西 - python - 使用 CLI 在输入上运行 Python 脚本以生成输出
- python-3.x - imshow only one color channel with openCV from RGB image and loop through all pixels in a color channel
- javascript - 如何在 python 烧瓶中修复“未定义不是 JSON 可序列化”