我有一个数组列表(或对象,它们来自数据库,通过PDO
fetchAll()
函数,所以这两个选项对我来说都没问题。我希望将数组列表转换为数组的关联数组,每个数组的键是其列之一。
我显然可以做一个循环,但我想知道是否有一些PHP函数已经这样做了,可能是以更有效的方式。
因此,为了说明它,假设我有一个数组(非关联),里面有数组:
[0] => {'name' : 'Joe', 'surname' : 'Bloggs', 'id' : '12345'}
[1] => {'name' : 'Sandy', 'surname' : 'Smith', 'id' : '54321'}
我希望将其转换为:
['12345'] => {'name' : 'Joe', 'surname' : 'Bloggs', 'id' : '12345'}
['54321'] => {'name' : 'Sandy', 'surname' : 'Smith', 'id' : '54321'}
答案 0 :(得分:5)
一个简单的循环可以,但是发布答案太无聊了,所以你走了:
$array = array_combine(array_map(function (array $row) { return $row['id']; }, $array),
$array);
如果你偏爱functional PHP:
$array = array_combine(F\pluck($array, 'id'), $array);
答案 1 :(得分:-1)
$rows = $stmt->fetch(PDO::FETCH_ASSOC);
或
$rows = $stmt->fetchall(PDO::FETCH_ASSOC);
让我们阅读HashPHP所说的内容:
请注意在fetch()和fetchAll()代码中使用PDO :: FETCH_ASSOC 以上。这告诉PDO将行作为关联数组返回 字段名称为键。其他获取模式如PDO :: FETCH_NUM返回 行作为数值数组。默认是获取 PDO :: FETCH_BOTH使用数字和数据复制数据 关联键。建议您指定一个或另一个 没有大小翻倍的数组! PDO还可以获取对象 使用PDO :: FETCH_OBJ,可以使用现有的类 PDO :: FETCH_CLASS。它也可以绑定到特定的变量 PDO :: FETCH_BOUND并使用bindColumn方法。