문자열을이 클래스에 전달할 때 Ajax 호출을 통해 PHP에 전달 된 문자열을 살균하는 클래스를 작성하고 있지만 제대로 작동하지만 참조로 배열을 전달하면 작동하지 않습니다.PHP 배열을 참조로 전달합니다.
class Sanitize {
public static function clean (&$str) {
self::start($str);
}
public static function cleanArray (&$array) {
if (self::arrayCheck($array)) {
foreach ($array as $key => $value) {
if (self::arrayCheck($value)) {
self::cleanArray($value);
} else {
self::clean($value);
}
}
} else {
throw new Exception ('An array was not provided. Please try using clean() instead of cleanArray()');
}
}
private static function start (&$str) {
$str .= '_cleaned';
}
private static function arrayCheck ($array) {
return (is_array($array) && !empty($array));
}
}
시험 코드 :
$array = array(
'one' => 'one',
'two' => 'two',
'three' => 'three',
'four' => 'four'
);
echo print_r($array, true) . PHP_EOL;
Sanitize::cleanArray($array);
echo print_r($array, true) . PHP_EOL;
출력 :
Array
(
[one] => one
[two] => two
[three] => three
[four] => four
)
Array
(
[one] => one
[two] => two
[three] => three
[four] => four
)
내가 놓친 거지 뭔가가 있나요, 아니면 PHP에서 둥지를 참조 패스에 불가능하다?
나는 foreach를 할 때 참조를 잃어 버릴 것입니다. foreach ($ array = $ & array $ array) – Erik
오 완벽한 표현입니다. 치명적인 오류가 발생하는 '& key'에서 작동하지 않지만 값을 참조로 전달할 수 있습니다. 감사합니다. 답으로 게시하여 받아 들일 것입니다. –
참조로 매개 변수를 전달하지 마십시오. 시간의 99 %가 더 좋은 방법입니다. – Konstantin