在Laravel中将数组转换为集合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Laravel中将数组转换为集合相关的知识,希望对你有一定的参考价值。

我在php中有以下数组:

[
  {
     "website": "example",
     "url": "example.com"
  },
  {
     "website": "example",
     "url": "example.com"
  }
]

现在我想把它转换成一个集合,所以我按键websiteurl排序。但是当我这样做时:

$myArray = collect(websites);

我得到了这个:

 {
      "0": {
         "website": "example",
         "url": "example.com"
      },
      "1": {
         "website": "example",
         "url": "example.com"
      }
    }

并且排序不起作用,我想知道我做错了什么以及如何修复它所以我有一个我可以轻松排序的对象的数组集合。

编辑:我希望输出与此相同:

[
  {
     "website": "example",
     "url": "example.com"
  },
  {
     "website": "example",
     "url": "example.com"
  }
]

通过“排序不起作用”我的意思是项目没有排序。

答案

如果你有

$collection = collect([
    (object) [
        'website' => 'twitter',
        'url' => 'twitter.com'
    ],
    (object) [
        'website' => 'google',
        'url' => 'google.com'
    ]
]);

然后,将您的数组包装在Collection类的实例中。这意味着它的行为不像典型的数组( - 它将像数组一样,但不要像对待它一样 - )直到你在它上面调用all()toArray()。要删除任何添加的索引,您需要使用values()

$sorted = $collection->sortBy('website');

$sorted->values()->all();

预期产量:

[
     {#769
       +"website": "google",
       +"url": "google.com",
     },
     {#762
       +"website": "twitter",
       +"url": "twitter.com",
     },
]

请参阅文档https://laravel.com/docs/5.1/collections#available-methods

toArray方法将集合转换为普通的PHP数组。如果集合的值是Eloquent模型,则模型也将转换为数组。

all方法返回集合表示的底层数组。

以上是关于在Laravel中将数组转换为集合的主要内容,如果未能解决你的问题,请参考以下文章

在laravel 5.1中将对象转换为数组

如何在php laravel中将数组键转换为随机字符串

在 Laravel 中将二维数组转换为 json 对象

无法在laravel中将数组数组转换为没有索引的对象数组

在laravel中将对象转换为数组[重复]

在laravel中将对象转换为数组[重复]