Saya belum pernah melihat masalah ini. Nilai default itu seharusnya berfungsi. Saya akan mengatakan mencoba membuat kunci string dan set #default_valuesebagai string. The #optionsArray mungkin sedang melewati array_merge suatu tempat, sehingga rekeying bilangan bulat kunci. Jika kunci adalah string maka itu seharusnya tidak terjadi. Saat ini, array Anda terlihat seperti ini:
$options = array(
0 => '0',
500 => '500',
1000 => '1000',
);
Tetapi melewati array itu melalui array_mergebisa mengatur kembali kunci integer menjadi berurutan:
$options = array(
0 => '0',
1 => '500',
2 => '1000',
);
Jika itu terjadi maka 500kuncinya tidak ada. Ini karena array_mergetidak suka menyimpan kunci integer, tetapi Anda dapat menggunakan string untuk mencegahnya. Jadi, saya pikir array Anda akan terlihat seperti ini:
$options = array(
'0' => '0',
'500' => '500',
'1000' => '1000',
);
Kemudian Anda dapat mengatur #default_value:
$form['price']['min']['#default_value'] = '500';
Kalau tidak, apakah ada tempat lain yang default_valuemungkin ditimpa?