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

ピーターの場合に加えて、行自体が配列であり、単なるスカラーではない場合を追加します。クエリに含まれるフィールドと同じ数のフィールドに、結果をネストすることができます。

例 ここでは、field1 と field2 にそれぞれ 2 レベルのネストがあります。

$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 に答える