0

Doctrine DBALによって返された結果をループして、各配列から文字列/非整数キーのみを返したいと思います。以下を使用すると、Doctrine は文字列キー (データベースの列名にマップされます) と整数をキーとする重複値の両方を返します。反復アプローチを使用して、文字列/非整数キーのみを取得するにはどうすればよいですか?

$stmt = $app['db']->prepare('SELECT * FROM table');
$stmt->execute();

while ($row = $stmt->fetch()) {
    print_r($row['track_name']);
}

戻り値

Array
(
    [field1] => foo1
    [0] => foo1
    [field2] => bar1
    [1] => bar1
)
Array
(
    [field1] => foo2
    [0] => foo2
    [field2] => bar2
    [1] => bar2
)
...

手に入れたい

Array
(
    [field1] => foo1
    [field2] => bar1
)
Array
(
    [field1] => foo2
    [field2] => bar2
)
...

頼ることなく

$fields = array('field1', 'field2');
while ($row = $stmt->fetch()) {
    foreach ($row as $key => $val) {
        if (in_array($key, $fields)) {
            print_r($row[$key]);
        }
    }
}
4

1 に答える 1

2

行を変更

while ($row = $stmt->fetch()) {

while ($row = $stmt->fetch(\Doctrine\ORM\Query::HYDRATE_ARRAY)) {

PDO:FETCH_ASSOC を使用することもできます (Doctrine は同じ定数値を使用しているようです)。その他の有効な値は次のとおりです。

  • HYDRATE_OBJECT
  • HYDRATE_SCALAR
  • HYDRATE_SINGLE_SCALAR
  • HYDRATE_SIMPLEOBJECT
于 2013-03-19T15:54:42.093 に答える