di tanto in tanto, mi trovo in una situazione in cui ho una query simile in natura a:gruppo DOP fetchAll coppie chiave-valore in assoc serie
SELECT `key`, `value` FROM `settings`;
In questo caso, voglio ottenere un associativa array, utilizzando i valori di key
& value
come rispettive voci di tale array, ad esempio se il database contiene: ('first_name', 'Tom'), ('last_name', 'Jeferson')
, la matrice deve essere array('first_name' => 'Tom', 'last_name' => 'Jeferson');
.
Il modo più comune per farlo è:
$settings_flat = $db
->query("SELECT `name`, `value` FROM `settings`;")
->fetchAll(PDO::FETCH_ASSOC);
$settings = array();
foreach ($settings_flat as $setting) {
$settings[$setting['name']] = $setting['value'];
}
* L'altro modo per farlo è chiamando fetchAll(PDO::FETCH_COLUMN)
due volte & quindi utilizzando array_combine
per creare l'array. Tuttavia, dal momento che coinvolge due chiamate due nel database, tralascio questo come opzione.
C'è un altro modo per farlo?
Grande! Non sapevo di questa costante. Apparentemente la pagina di documentazione di recupero PDO non li elenca tutti. Però, il bit 'AS nome, AS value' è ridondante. – Gajus
Inoltre, non lo sapevo, il mio IDE me l'ha evidenziato ...) – devdRew
C'è un modo per usare 'PDO :: FETCH_KEY_PAIR' e avere l'output come' oggetto' allo stesso tempo? – adamj