Я просмотрел страницы руководства array_keys и array_values. Ни один из них ничего не сказал о том, соблюдают ли они порядок элементов исходного массива. Все они обещают, что они вернут все ключи или значения из исходного массива. Но можем ли мы быть абсолютно уверены, что порядок элементов будет точно таким же, как и у исходного массива? Какой бы массив он ни был?
Я спрашиваю об этом, потому что у меня есть это:
$record = array('name' => 'Lisa', 'age' => 16, 'gender' => 'female');
$fields = array_keys($record);
$values = array_values($record);
$sql = "INSERT INTO {$this -> table} (".implode(', ', $fields).") VALUES (".implode(', ', array_fill(0, count($fields), '?')).")";
$sth = $this -> dbh -> prepare($sql);
$sth -> execute($values);
Хотя я могу использовать именованные параметры, но это будет стоить немного больше кода, поэтому я предпочитаю этот способ, который требует, чтобы элементы $fields и $values находились в соответствующих парах, предпочтительно они были бы в том же порядке, что и исходный массив $запись.
Любая идея?