Compare
Manipulate[c[1] = 1; c[1], {c[1], 0, 1}]
with
Manipulate[Do[c[i] = 1, {i, 1}]; c[1], {c[1], 0, 1}]
The first case sets the local c[1] (the one displayed by Manipulate) to be 1. The second case sets the global value of c[1] to be 1. Why do these two examples behave differently?
The problem I'm trying to solve here is assigning to a parameterized bunch of variables (more than the one in the examples above) inside a Manipulate construct. For context, this started out over here, but I've peeled it out as a separate question because this formulation seems more direct and more general.