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

问题描述 投票:0回答:3

我用这个代码来解决这个问题

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

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

php laravel
3个回答
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
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.