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

===============>>#1 票数:5 已采纳

一个简单的循环就可以了,但这太无聊了,无法发布答案,因此您可以开始:

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

如果您偏爱功能性PHP

$array = array_combine(F\pluck($array, 'id'), $array);

===============>>#2 票数:-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方法绑定到特定变量中。

  ask by jbx translate from so

未解决问题?本站智能推荐: