I would say configuration through arrays is a rather good idea. During implementation of my application I've discovered standard PHP .ini parse function doesn't preserve variable values in a strict fashion:
ini_variable = true
results in value of $config->section->ini_variable to be === 1. This is certainly not what I want: for me 'true' means PHP true, 'false' PHP false, and '1' PHP 1 (or '1'). It really starts to matter when your code uses strict (===) comparisons (which, personally, I consider good PHP programming practice). So, I have written my own INI parsing method, and now I make a call:
$config = new Zend_Config(Argasek_Config_Ini::read($thisdir.'/cfg/whatever.ini'));
and convert array returned by ::read into object. Nice and clean.