【问题标题】:Use explode on array?在数组上使用爆炸?
【发布时间】:2021-07-16 15:41:09
【问题描述】:

什么是最简单的翻转数组的方法

[
    0 => "3.1"
    1 => "2.1"
]

进入

[
    ['tag_id' => 3, 'contact_id' => 1],
    ['tag_id' => 2, 'contact_id' => 1]
]

我可以使用 laravel/collections 内置的东西吗?

我知道我可以创建一个 foreach 循环并使用 explode 并填充一个新数组,但我想知道是否有 PHP 中的内置函数或我可以使用的 laravel 集合方法。

【问题讨论】:

  • 你用的是哪种慢方法?
  • @RiggsFolly 你是什么意思?
  • 添加更多有问题的详细信息,例如您已经尝试过的内容
  • @TahirRaza 添加了更多信息。如果问题不清楚,请告诉我。第一部分是我拥有的,第二部分是我想要的。
  • 你可以使用 array_map (PHP) 或 map (Laravel 集合)

标签: php laravel eloquent


【解决方案1】:

我认为您正在寻找 combine(或 PHP 等效的 array_combine

$keys = collect([ 'tag_id', 'contact_id' ]); 
$result = collect([
    "3.1",
    "2.1"
])->filter(function ($str) { return Str::contains($str, '.'); })
->map(function ($str) use ($keys) {
   return $keys->combine(collect(explode('.', $str))->take(2));
});

【讨论】:

  • 虽然我得到了嵌套集合,所以也许->toArray() 也已经到位。
  • @SeaBass 你真的认为这比简单的 foreach 更容易或更快吗?首先,需要调用多少个函数来实现这一点
  • 我想我一直在寻找一个简单的 laravel 集合命令,我们得到了相同数量的代码,哈哈,但这有一个额外的过滤器和集合的力量。可能会慢一些,但我们谈论的是一个最多包含 100 个项目的数组,所以应该没问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 2019-07-26
  • 2016-02-08
相关资源
最近更新 更多