1

有没有办法更改 Zend_Db fetchall() 方法中的默认功能,使其不返回:

[0] => 100000055944231
[1] => 100000089064543
[2] => 100000145893011
[3] => 100000160760965

但是这个:

[100000055944231]
[100000089064543]
[100000145893011]
[100000160760965]
4

3 回答 3

2

尽管您的问题实际上存在缺陷(BartekR 指出),但我想您正在尝试接收一个简单的数组,而不是多维数组。

你可以这样做:

$results = $this->db->fetchAll($select);
$values = array_map(function($row) { return $row['column']; }, $results);

这将变成:

array(
    array('column' => 'test'),
    array('column' => 'test2'),
    array('column' => 'test3'),
);

进入

array(
    'test',
    'test2',
    'test3'
);

(注意;我的示例仅适用于 PHP5.3+,如果您使用的是 PHP5.2,则可以定义该函数并通过其名称与 array_map 一起使用它(例如array_map('methodName', $results)

于 2012-03-16T21:47:27.233 回答
0

我正在寻找类似的解决方案,我正在尝试将 fetchAll($select) 返回的字段加载为数组键.. 不循环遍历整个结果集。

所以:

$results = $this->db->fetchAll($select, <FIELDNAME_TO_MAKE_KEY_OF_RESULTS_ARRAY>);

results[<my fieldname>]->dbfield2;
于 2012-01-16T22:52:33.693 回答
0

在 Pieter 的基础上,我会添加行本身是数组的情况,而不仅仅是标量;可以将结果嵌套到查询包含的尽可能多的字段中。

例如,这里有两层嵌套,分别在 field1 和 field2 上。

$complex_results = array_map(function($row) { return array($row['field1'] => array($row['field2'] => $row)); }, $results);

与往常一样,每一行都包含所有字段,但$complex_results由 field1 索引,然后仅由 field2 索引。

于 2015-10-19T18:10:11.997 回答