누군가가 참조 용으로 키를 전달할 수없는 이유를 설명 할 수 있습니까?키와 값을 모두 전달할 수있는 대안 참조 :
예 :
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);
어떤 대안이 있습니까?
큰 오래된 * 왜 * 자격이 필요합니까? 'sec ($ key)'가 다른 기존 키의 값을 얻는다면 어떨까요? 기존 키를 덮어 쓰시겠습니까? 응용 프로그램에서 키가 위험 할 수있는 이유를 설명해야합니다. – webbiedave
왜 위험 할 수 없습니까? 양식이나 Tamperdata와 같은 것으로 $ _POST 키를 쉽게 변경할 수 있습니다. mysql 쿼리에 사용하는 일부 키. – Ben
나는 그럴 수 없다고 말하지 않았다. 나는 당신의 응용 프로그램에서 열쇠가 왜 위험 할 수 있는지 설명 할 필요가 있다고 말했다. 그것은 우리에게 귀하의 상황에 가장 적합한 접근 방법을 알려줄 것입니다. – webbiedave