0

我有一个数组列表(或对象,它们通过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'}
4

2 回答 2

6

一个简单的循环就可以了,但这太无聊了,无法发布答案,所以你去吧:

$array = array_combine(array_map(function (array $row) { return $row['id']; }, $array),
                       $array);

如果您偏爱功能性 PHP

$array = array_combine(F\pluck($array, 'id'), $array);
于 2013-04-17T23:00:43.747 回答
-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 方法绑定到特定变量。

于 2013-04-17T23:01:32.277 回答