I have an multidimensional array that looks like this:
Array ( [0] => Array ( [ClientID] => ec2173de2134fdsfg4fsdffcb4b5205 [Name]
$flat = array();
foreach($multidim as $item)
$flat[$item['ClientID']] = $item['Name'];
Whether you'd be better off storing the original form cannot be answered generally. You should store it if you need it.
It looks like you are creating a hash table with the original data. Hash tables are very fast for accessing and inserting single data elements. However, you can't run queries against the data contained in the records--you can only retrieve based on the unique key or insert based on a generated key.
You might use the original format with all its fields as the "back-end" and generate a hash table like the one you demonstrated. The draw-back is that every time this table is generated, it costs CPU cycles.
If you throw this data into a database, the DB engine will handle creating regular data tables (like your first one) and hash tables (like your second) as needed for the particular query that you are using. You can also force it to create hash tables based on a certain database column.