对Thinkphp select的数据集的键改成表里的ID

Thinkphp select后的数组是一个二维数组,键是从0开始排序的,数组里面是带有ID,现在我要查出来的结果是,一个二维数组,键是数据的ID.

有什么办法呢?

阅读 6.5k
3 个回答

复制一个数组不行吗

<?php
    $arr = [
        [
            'id' => 1,
            'name' => "Bob",
            'sex' => "男",
        ],
        [
            'id' => 2,
            'name' => "Frank",
            'sex' => "男",
        ],
    ];
    $arr2 = [];
    for ($i=0; $i < count($arr); $i++) { 
        $arr2[$arr[$i]['id']] = $arr[$i];
        unset($arr2[$arr[$i]['id']]['id']);
    }
    var_dump($arr2);

使用thinkphp的getField()方法查询。
getField方法不只是用来查询个别字段的值,还可以用来指定查询结果的数组索引。
如果传入了2个以上的字段名,则返回一个二维数组(类似select方法的返回值,区别在于索引是二维数组的键名是第一个字段的值),例如:

$result = $User->where('status=1')->getField('id,account,nickname',true);

获得的数组就是以id(第一个字段)为数组键,id,account,nickname字段数据为值组成的数组。
只填入2个字段则得到的键值对。

详细:getField用法总结

楼上的方法应该也可以,我这里补充一个

$array= [ 
    [   
        'id'=>10,
        'name'=>'zs',
        'age'=>18,
    ],  
    [   
        'id'=>11,
        'name'=>'ls',
        'age'=>19,
    ],  
    [   
        'id'=>12,
        'name'=>'ww',
        'age'=>20,
    ],  
];
$index_id = array_column($array,null,'id');
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏