如何解决重命名 Laravel 集合键
我有一套数据字典$dataDictCollection
"column_a" => "Column A","column_b" => "Column B","column_c" => "Column C","column_d" => "Column D","column_e" => "Column E",
我有另一组结果$resultCollection
[{
"column_a" => "value 100","column_b" => "value 200","column_c" => "value 300","column_d" => "value 400","column_e" => "value 500",},{
"column_a" => "value 110","column_b" => "value 220","column_c" => "value 330","column_d" => "value 440","column_e" => "value 550",}]
在结果中,我希望将数据字典的值作为结果的键。例如:
"Column A" => "value 100","Column B" => "value 200","Column C" => "value 300","Column D" => "value 400","Column E" => "value 500",
请注意,我的列数很多,我无法指定如下所示的键名。
return $data['Column A'] = 'value 100';
我尝试了 mapWithKeys
、keyBy
,但我不知道如何返回我想要的结果。
我试过了
return collect($resultCollection)->map(function ($result) use ($dataDictCollection) {
return collect($dataDictCollection)->map(function ($dataDic) use ($result) {
$name[$dataDic] = $result[$dataDic];
return $name;
});
});
但它返回这个:(
"column_a": {
"Column A": "value 100"
},"column_b": {
"Column B": "value 200"
},
又一次尝试
return collect($resultCollection)->map(function ($result) use ($dataDictCollection) {
return collect($result)->combine($dataDictCollection);
})->values();
但它像这样返回,相反并且不返回完整的数据字典。
[{
"value 100" => "Column A","value 200" => "Column B","value 300" => "Column C",{
"value 110" => "Column A","value 220" => "Column B","value 330" => "Column C",}]
解决方法
您可以使用combine收集方法
public interface IBotClient
{
/// <summary>
/// Gets account balance for an asset.
/// </summary>
/// <param name="asset">The asset.</param>
/// <param name="ct">Cancellation token.</param>
/// <returns>The account balance.</returns>
/// <exception cref="T:ElonMuskBot.Core.Exceptions.CallFailedException">If the call fails.</exception>
Task<Balance> GetBalanceAsync(string asset,CancellationToken ct = default);
/// <summary>
/// Gets account balances.
/// </summary>
/// <param name="ct">Cancellation token.</param>
/// <returns>The account balances.</returns>
/// <exception cref="T:ElonMuskBot.Core.Exceptions.CallFailedException">If the call fails.</exception>
Task<IList<Balance>> GetBalancesAsync(CancellationToken ct = default);
...
}
public abstract class BotClientBase : IBotClient
{
private readonly IBinanceClient _client;
private readonly IBinanceSocketClient _socketClient;
protected BotClientBase(IBinanceClient client,IBinanceSocketClient socketClient)
{
_client = client;
_socketClient = socketClient;
}
/// <summary>
/// Gets account balance for an asset.
/// </summary>
/// <param name="asset">The asset.</param>
/// <param name="ct">Cancellation token.</param>
/// <returns>The account balance.</returns>
/// <exception cref="T:ElonMuskBot.Core.Exceptions.CallFailedException">If the call fails.</exception>
public abstract Task<Balance> GetBalanceAsync(string asset,CancellationToken ct = default);
/// <summary>
/// Gets account balances.
/// </summary>
/// <param name="ct">Cancellation token.</param>
/// <returns>The account balances.</returns>
/// <exception cref="T:ElonMuskBot.Core.Exceptions.CallFailedException">If the call fails.</exception>
public abstract Task<IList<Balance>> GetBalancesAsync(CancellationToken ct = default);
...
}
public class SpotBotClient : BotClientBase
{
private readonly ILogger<SpotBotClient> _logger;
private readonly IBinanceClient _client;
private readonly IBinanceSocketClient _socketClient;
public SpotBotClient(ILogger<SpotBotClient> logger,IBinanceClient client,IBinanceSocketClient socketClient) : base(client,socketClient)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
_client = client;
_socketClient = socketClient;
}
/// <summary>
/// Gets account balance for an asset.
/// </summary>
/// <param name="asset">The asset.</param>
/// <param name="ct">Cancellation token.</param>
/// <returns>The account balance.</returns>
/// <exception cref="T:ElonMuskBot.Core.Exceptions.CallFailedException">If the call fails.</exception>
public override async Task<Balance> GetBalanceAsync(string asset,CancellationToken ct = default)
{
...
}
/// <summary>
/// Gets account balances.
/// </summary>
/// <param name="ct">Cancellation token.</param>
/// <returns>The account balances.</returns>
/// <exception cref="T:ElonMuskBot.Core.Exceptions.CallFailedException">If the call fails.</exception>
public override async Task<IList<Balance>> GetBalancesAsync(CancellationToken ct = default)
{
...
}
...
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。