Может кто-нибудь объяснить мне, почему вы не можете передать ключ в качестве ссылки?
Ex:
if(is_array($where)){
foreach($where as &$key => &$value){
$key = sec($key);
$value = sec($value);
}
unset($key, $value);
}
Выдает:
Fatal error: Key element cannot be a reference in linkstest.php on line 2
Могу ли я сделать нечто подобное, используя array_map?
Все, что я хочу сделать, это перебрать ассоциативный массив и экранировать ключ и значение с помощью моей функции sec ().
Карту массивов мне сложно понять:
Я много чего перепробовал с array_map, но не могу заставить его воздействовать на ключи напрямую.
Получу ли я какой-либо выигрыш в производительности, используя карту массивов, чем просто использование цикла foreach?
Что мне не нравится в foreach, так это то, что я не могу работать с массивом напрямую, и мне приходится иметь дело с созданием временных массивов и их сбросом:
foreach($where as $key => $value){
$where[secure($key)] = secure($value);
}
Это может произойти сбой, если он найдет что-то, что может скрыться в ключе, добавит новый элемент и сохранит неэкранированный.
Так я застрял с чем-то вроде этого?
$temparr = array();
foreach($where as $key => $value){
$temparr[secure($key)] = secure($value);
}
$where = $temparr;
unset($temparr);
Есть ли альтернативы?