동일한 키를 유지하면서 어레이를 어떻게 복제합니까?
-
05-07-2019 - |
문제
확인. 나는 간단한 (ISH) 기능을 작성하여 인수를 취하고 HTML 캐릭터가 캐릭터 엔티티로 대체 된 위험과 동일한 인수를 반환했습니다.
함수는 문자열, 배열 또는 2D 배열 인 인수로서 인수로 취할 수 있습니다. 3D 배열 이상은 지원되지 않습니다.
함수는 다음과 같습니다.
public function html_safe($input)
{
if(is_array($input)) //array was passed
{
$escaped_array = array();
foreach($input as $in)
{
if(is_array($in)) //another array inside the initial array found
{
$inner_array = array();
foreach($in as $i)
{
$inner_array[] = htmlspecialchars($i);
}
$escaped_array[] = $inner_array;
}
else
$escaped_array[] = htmlspecialchars($in);
}
return $escaped_array;
}
else // string
return htmlspecialchars($input);
}
이 기능은 작동하지만 문제는 원래 배열의 배열 키를 유지해야한다는 것입니다.
이 기능의 목적은 문자 그대로 데이터베이스 쿼리에서 결과 세트를 전달하고 안전한 HTML 문자로 모든 값을 되 찾을 수 있도록하는 것이 었습니다. 따라서 분명히 배열의 키는 데이터베이스 필드의 이름이 될 것이며 현재 내 함수는 숫자 값으로 대체합니다.
그렇습니다. 배열 키가 아직 손상되지 않은 상태에서 동일한 인수를 기능으로 전달해야합니다 (배열이 전달 된 경우).
그것이 말이되기를 바랍니다. 제안은 감사했습니다.
해결책
수많은 미루를 중첩하지 않고 재귀를 사용할 수 있습니다.
function html_safe($input) {
if (is_array($input)) {
return array_map('html_safe', $input);
} else {
return htmlspecialchars($input);
}
}
다른 팁
알았어, 나는 이것을 스스로 알아 낸 것 같아 ...
내 Foreach 루프에는 예를 들어 다음과 같은 키가 지정되지 않았습니다.
foreach($array_val as $val)
대신에:
foreach($array_val as $key => $val)
이 경우 출력 Arrray에서 배열 키를 보존 할 수있었습니다.
제휴하지 않습니다 StackOverflow