PDO - array_map 返回键中的对象 ID

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

嘿我有带有返回键的数组

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

我的结果如下所示:

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

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

如果我想返回 ids 作为键,我会这样调用:

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

我的结果看起来像这样:

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

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

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

$temp = array_map(function($v){return $v[0];}, $sth->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_CLASS));
php pdo array-map
3个回答
5
投票

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

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

输出:- https://3v4l.org/EDPpj

参考:-

数组列()

array_combine()


0
投票

使用foreach:

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

0
投票

只需添加此作为答案,因为我相信这是执行此操作的最短方法,使用

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
        )

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