如何使用key =>创建数组来自对象{key,value}的值?

时间:2017-12-26 22:38:06

标签: php laravel

我通过此代码解决了这个问题

    $service_list = Service::all();
    $services = [];
    foreach ($service_list as $item){
        $services[$item['id']] = $item['name'];
    }

但是如何使用php_array函数呢? 它用于下拉选择

3 个答案:

答案 0 :(得分:3)

不确定为什么必须使用内置数组方法的PHP,但我们在Query Builder和Collection类上有pluck

$services = Service::pluck('name', 'id');
// $services->all(); // for the actual array contained

这只会在查询中选择nameid,并为您提供一个仅包含id字段的name键入的收藏。

$services = Service::all();
$services_array = $services->pluck('name', 'id')->all();

如果你已经拥有了你的模型集合(上面的代码已经针对每个字段和带有结果的水合模型进行查询),你可以在集合上使用pluck来获得相同的结果(尽管效率不高)查询所有字段,水合模型,然后从中提取这两个字段)

Laravel 5.5 Docs - Query Builder - Retrieving Results

Laravel 5.5 Docs - Collections - pluck method

答案 1 :(得分:1)

使用toArray()将集合转换为数组,然后使用array_combine()从中创建关联数组。

$service_list = Service::all()->toArray();
$services = array_combine(array_column($service_list, 'id'), array_column($service_list, 'name'));

答案 2 :(得分:0)

$service_list = Service::all()->toArray();

all()将返回collectioncollection支持toArray()方法