Can someone explain to me why you can\'t pass a key as reference?
Ex:
if(is_array($where)){
foreach($where as &$key => &$value){
Can someone explain to me why you can't pass a key as reference?
Because the language does not support this. You'd be hard-pressed to find this ability in most languages, hence the term key.
So am I stuck with something like this?
Yes. The best way is to create a new array with the appropriate keys.
Any alternatives?
The only way to provide better alternatives is to know your specific situation. If your keys map to table column names, then the best approach is to leave the keys as is and escape them at their time of use in your SQL.
why is it a problem to do that? Make it a function. A function takes an input and gives an output. Your function input will be your "unsecured" array. Your output will be the result of securing the array.
Then you just do
$where = secureMyArray($where);
That's why you have the ability to make functions...