2015-01-22 3 views
0

Предположим, у меня есть простой стол, такой какPDO получить индекс результата по названию столбца

имя | электронная почта
a | [email protected]
b | [email protected]

Если я сделать

$result = $db->fetchAll(PDO::FETCH_ASSOC) 

на SELECT *, например, я получаю что-то вроде

Array{ 
    [0] => array{ 
      ['name'] => 'a' 
      ['email'] => '[email protected]' 
     } 
    [1] => array{ 
      ['name'] => 'b' 
      ['email'] => '[email protected]' 
     } 
    } 

Я хотел бы что-то вроде

Array{ 
    ['name'] => Array{ 
       [0] => 'a' 
       [1] => 'b' 
       } 
    ['email'] => Array{ 
       [0] => '[email protected]' 
       [1] => '[email protected]' 
       } 
} 

Так что $ result ['name'] - массив со всеми именами. Я знаю, что могу написать очень маленькую функцию, чтобы сделать это сам. Просто интересно, есть ли какой-то параметр fetch_style, который будет делать это автоматически. Спасибо!

+2

Я не считаю, что это может быть сделано с любым из извлекающих стилей. –

+0

Это невозможно сделать в одном запросе. Наиболее интересной частью PDO для просмотра будет «PDO :: FETCH_COLUMN». Тем не менее, нет способа вернуть другой столбец из той же строки, если вы используете PDOStatement :: fetchColumn() для извлечения данных. – icecub

ответ

2

Невозможно сделать это с помощью каких-либо флагов PDO.
Вот мой предложил преобразовать скрипт, это очень мало:

$result = []; 
foreach($array as $arr) foreach($arr as $k=>$v) $result[$k][] = $v; 

print_r($result); 
+0

Это как раз то, как OP должен это делать, хороший ответ. – Darren

+0

очень благодарен – alex436

Смежные вопросы