PDO - array_map return 键中的对象 ID

PDO - array_map return objects ids in keys

嘿,我有带 returned 键的阵列

$temp = $sth->fetchAll(PDO::FETCH_ASSOC);

我的结果是这样的:

[0] => [
    'id' = 11,
    'title' => 't1'
]

[1] => [
    'id' = 12,
    'title' => 't2'
]

如果我想 return id 作为键,我会这样调用:

$temp = array_map(function($v){return $v[0];}, $sth->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC));

我的结果是这样的:

[11] => [
    'title' => 't1'
]

[12] => [
    'title' => 't2'
]

如何通过 ID return 对象数组?当我这样做时,我没有对象中的方法...

$temp = array_map(function($v){return $v[0];}, $sth->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_CLASS));

我会做一些更简单的代码,如下所示:-

$fianl_array = array_combine(array_column($temp,'id'),$temp);

输出:- https://eval.in/993728

参考:-

array_column()

array_combine()

使用 foreach:

foreach($input as $k=>$v){
    $output[$v['id']] = array('title'=>$v['title']);
}
print_r($output);

只需添加这个作为答案,因为我认为这是执行此操作的最短方法,使用 array_column() 和第三个参数,这是您希望数据索引的键。如果您使用 null 作为第二个参数,它将按 'id' 索引所有数据,您可以改为使用 'title',这只会按 ID 索引标题列...

$output = array_column($temp,null,'id');

这给...

Array
(
    [11] => Array
        (
            [id] => 11
            [title] => t1
        )

    [12] => Array
        (
            [id] => 12
            [title] => t2
        )

)