Zend db Zend_Db fetchAll()将值作为键返回,而不是作为键返回=>;价值

Zend db Zend_Db fetchAll()将值作为键返回,而不是作为键返回=>;价值,zend-db,fetchall,Zend Db,Fetchall,有没有办法更改Zend_Db fetchall()方法中的默认功能,使其不返回以下内容: [0] => 100000055944231 [1] => 100000089064543 [2] => 100000145893011 [3] => 100000160760965 但这是: [100000055944231] [100000089064543] [100000145893011] [100000160760965] 我正在寻找类似的解决方案,我正在尝试加载fe

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

[0] => 100000055944231
[1] => 100000089064543
[2] => 100000145893011
[3] => 100000160760965
但这是:

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

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

因此:

$results=$this->db->fetchAll($select,);
结果[]->dbfield2;

虽然您的问题实际上是有缺陷的(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'),
);
进入


(注意:我的示例仅适用于PHP5.3+,如果您使用的是PHP5.2,则可以定义函数并通过其名称与array_map一起使用它(例如,
array_map('methodName',$results)
)在Pieter的基础上,我添加了这样一种情况:行本身就是数组,而不仅仅是标量;可以将结果嵌套到查询包含的尽可能多的字段中

e、 g.这里有两个嵌套级别,分别在field1和field2上

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

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

但它不一样吗?您到底需要什么?字符串系列?fetchAll始终将返回一个数组-您可以设置此数组的外观,但它始终是一个数组
array(
    'test',
    'test2',
    'test3'
);
$complex_results = array_map(function($row) { return array($row['field1'] => array($row['field2'] => $row)); }, $results);