PDO - array_map返回对象ID作为键

3

嘿,我有一个包含返回键的数组

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

我的结果看起来像这样:
[0] => [
    'id' = 11,
    'title' => 't1'
]

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

如果我想将id作为键返回,我会这样调用:
$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));

你能澄清一下你的结果数组应该长什么样吗?“它没有出现”并不是很有帮助。 - Nico Haase
为什么不使用简单的foreach()? - Alive to die - Anant
1
array_combine( array_column( $results, 'id' ), $results ); - Scuzzy
3个回答

5

0

使用foreach:

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

0

我认为这是最简单的方法,只需使用{{link1: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
        )

)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接