PHP 프로그래밍에서는 종종 무작위 비밀번호, 검증 코드 또는 데이터 난독 화를 생성하기 위해 문자열을 무작위로 방해해야합니다. PHP의 내장 함수 str_shuffle은 문자열 문자 시퀀스의 무작위 혼란을 구현하는 데 특별히 사용되는 도구입니다.
str_shuffle 함수의 기능은 무작위로 중단 된 문자열을 반환하는 것입니다. 구문은 매우 간단합니다.
<?php
$original = "abcdefg";
$shuffled = str_shuffle($original);
echo $shuffled;
?>
이 코드에서 str_shuffle은 문자열 "abcdefg" 의 문자 순서를 무작위로 방해합니다. 예를 들어, "gbfedca" 또는 "cfgbeda" 등을 출력 할 수 있으며 각 통화 결과는 다릅니다.
str_shuffle은 문자열의 문자 순서를 방해하고 문자를 추가하거나 삭제하지 않으며 출력 길이는 입력 길이와 동일합니다.
str_shuff 는 문자열을 방해하기위한 바로 가기이지만, 기본 구현은 실제로 임의의 순열 알고리즘을 기반으로하며 각 호출은 전체 문자열을 처리합니다. 작업을 방해하기 위해 매우 긴 문자열을 자주 호출 해야하는 경우 성능에 영향을 줄 수 있습니다.
중단 효율성을 향상시키기위한 몇 가지 제안은 다음과 같습니다.
PHP의 str_shuffle은 무작위 숫자 생성 기능을 자동으로 호출합니다. 짧은 시간에 여러 번 호출되면 동일한 랜덤 시퀀스의 반복 생성을 피하기 위해 mt_srand ()를 사용하여 임의의 시드를 수동으로 설정하는 것이 좋습니다.
<?php
mt_srand((int)(microtime(true) * 1000000));
$shuffled = str_shuffle("yourstringhere");
echo $shuffled;
?>
이렇게하면 무작위 숫자 생성이 균일 해지고 동일한 중단 결과의 확률이 줄어 듭니다.
보다 효율적이거나 유연한 방해 방법이 필요한 경우 Fisher-Yates 셔플 링 알고리즘을 사용하여 먼저 문자열을 배열로 변환 한 다음 다시 문자열로 연결할 수 있습니다.
<?php
function efficient_str_shuffle($string) {
$array = preg_split('//u', $string, null, PREG_SPLIT_NO_EMPTY);
$len = count($array);
for ($i = $len - 1; $i > 0; $i--) {
$j = mt_rand(0, $i);
// 교환
$temp = $array[$i];
$array[$i] = $array[$j];
$array[$j] = $temp;
}
return implode('', $array);
}
echo efficient_str_shuffle("abcdefg");
?>
이 사용자 정의 기능은 각 문자의 무작위성을 보장 할 수 있으며 다중 바이트 문자 (예 : 중국어)에도 적용될 수 있습니다. str_shuffle 과 비교할 때이 방법은 복잡한 문자 세트를 다룰 때 더 안전합니다.
결과를 한 번만 엉망으로 만들면 str_shuff에 대한 반복 통화를 최소화하십시오. 여러 임의의 결과가 필요한 경우 먼저 방해를 한 다음 반복적 인 작업을 피하기 위해 캐시 할 수 있습니다.
STR_SHUFLE 기능은 간단한 구문과 사용하기 쉬운 문자열 메시징을 빠르게 구현하는 데 적합합니다.
멀티 바이트 문자열의 경우 str_shuffle에 문제가있을 수 있으며 사용자 정의 스크램블러 기능을 사용할 수 있습니다.
긴 문자열과 고주파 호출 시나리오의 경우 사용자 지정 알고리즘을 사용하거나 효율성을 높이기 위해 임의의 숫자 씨앗을 합리적으로 설정하는 것이 좋습니다.
str_shuffle 의 기본 사용 및 성능 최적화 기술을 마스터하면 PHP에서 문자열의 무작위 혼란을보다 유연하고 효율적으로 처리 할 수 있습니다.