Может ли кто-нибудь объяснить мне, почему вы не можете передать ключ в качестве ссылки?
Пример:
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);
Какие-нибудь альтернативы?