gpt4 book ai didi

php - 如何在多个项目具有相同 key 的情况下使用 KeyBy

转载 作者:可可西里 更新时间:2023-11-01 13:46:56 26 4
gpt4 key购买 nike

我正在使用 Laravel Collections 方法,并试图通过 id 来键入我的查询结果(这是一个集合)。问题是我有多个具有相同 ID 的条目,但指向不同的国家,我想拥有所有的值,而不仅仅是最后一个。

这是我目前使用的代码:

   $allCountries = new Collection($allCountries);

$offerCountries = $allCountries->keyBy('id');

dd($offerCountries);

foreach ($offer as $o) {

$o->countries = $allCountries->get($o->id);

}

解释一下,我的查询将结果放在包含 ID 和国家/地区的 $allCountries 中,这些结果看起来像这样

id=>225, country=>US
id=>225, country=>IT
id=>3304, country=>NZ

只是给你一个快速的想法。我想通过导致 $offerCountries 的 id 键入它。然后我循环遍历以前的集合,其中包含具有特定 ID 的报价,该 ID 通过 id 与国家/地区结果相关。所以对于报价 225,它包含的国家是美国和意大利。我遍历每个报价并将国家对象设置为等于它等于的所有 $allCountries id。我这里的问题是 keyBy 覆盖了值,只取最后一个。我希望得到这样的结果:

 [
225 => countries: {'id' => 225, 'country' => 'US'}, {'id' =>
'225', 'country' => 'IT'}
3304 => ['id' => 3304, 'country' => 'NZ'],
]

是否有 laravel 方法来执行此操作,或者我是否需要编写自己的 keyBy 以便它不会覆盖。如果是这样,我该如何开始编写此方法?

谢谢

最佳答案

不使用keyBy,而是使用groupBy:

$countriesById = collect($allCountries)->groupBy('id');

关于php - 如何在多个项目具有相同 key 的情况下使用 KeyBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33396605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com