Zend_Db fetchall() メソッドのデフォルト機能を変更して、これを返さないようにする方法はありますか?
[0] => 100000055944231
[1] => 100000089064543
[2] => 100000145893011
[3] => 100000160760965
でもこれは:
[100000055944231]
[100000089064543]
[100000145893011]
[100000160760965]
あなたの質問は実際には欠陥がありますが(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)
)
私は同様の解決策を探しています.fetchAll($ select)によって返されたフィールドを配列キーとしてロードしようとしています..結果セット全体をループせずに。
そう:
$results = $this->db->fetchAll($select, <FIELDNAME_TO_MAKE_KEY_OF_RESULTS_ARRAY>);
results[<my fieldname>]->dbfield2;
ピーターの場合に加えて、行自体が配列であり、単なるスカラーではない場合を追加します。クエリに含まれるフィールドと同じ数のフィールドに、結果をネストすることができます。
例 ここでは、field1 と field2 にそれぞれ 2 レベルのネストがあります。
$complex_results = array_map(function($row) { return array($row['field1'] => array($row['field2'] => $row)); }, $results);
いつものように、各行にはすべてのフィールドが含まれますが、$complex_resultsは field1 によってインデックス付けされ、次に field2 のみによってインデックス付けされます。