웹 개발에서는 종종 사용자에게 일련의 권한을 설정해야합니다. 권한의 저장 및 전송을 단순화하기 위해 허가 상태를 정수로 압축 할 수 있습니다. PHP의 Bindec 함수는 이진 문자열을 십진 정수로 변환하는 데 도움이 될 수 있으며, 이는 권한 코드의 인코딩 및 디코딩에 적합합니다.
예를 들어 사용자의 권한 상태를 나타내는 부울 값 세트가 있다고 가정합니다.
$permissions = [true, false, true, true];
각 부울 값은 권한을 나타내며, 참은 허가가 있음을 의미하며, 허가는 허가가 없음을 의미합니다. 손쉬운 저장과 비교를 위해이 배열을 10 진수 정수로 변환하려고합니다.
Bindec 은 PHP의 내장 기능으로 바이너리 문자열을 소수점으로 변환합니다. 사용법은 다음과 같습니다.
$decimal = bindec('1011'); // 나오십시오11
그렇다면 부울 배열을 '1011' 과 같은 형식으로 변환하는 방법은 무엇입니까?
<?php
function convertPermissionsToDecimal(array $boolArray): int {
// 부울 값을 이진 문자열로 변환합니다
$binaryString = '';
foreach ($boolArray as $bool) {
$binaryString .= $bool ? '1' : '0';
}
// 사용 bindec 소수로 변환하십시오
return bindec($binaryString);
}
// 예
$permissions = [true, false, true, true]; // 당신이 있다는 것을 나타냅니다1、1.3、1.4권한
$decimalCode = convertPermissionsToDecimal($permissions);
echo "허가 소수점 코드는입니다:$decimalCode"; // 산출:허가 소수점 코드는입니다:11
이 코드에서는 부울 어레이를 루프하고 해당 바이너리 문자열을 구성한 다음 Bindec을 호출하여 소수로 변환합니다.
데이터베이스에서 소수 권한 코드를 읽으면 반전의 부울 배열로 복원 할 수도 있습니다. 이 방법은 다음과 같습니다.
<?php
function convertDecimalToPermissions(int $decimal, int $length): array {
// 이진 문자열로 변환하고 지정된 비트 수를 보충하십시오.
$binaryString = str_pad(decbin($decimal), $length, '0', STR_PAD_LEFT);
// 부울 배열로 변환합니다
return array_map(fn($bit) => $bit === '1', str_split($binaryString));
}
// 예:절감11부울 배열
$restored = convertDecimalToPermissions(11, 4);
print_r($restored); // 산출:[true, false, true, true]
이 방법은 사용자 권한, 역할 제어, 구성 항목 및 기타 시스템을 설정하는 데 매우 실용적입니다. 예를 들어, https://m66.net/admin/users 와 같은 사용자 관리 배경에서 각 사용자의 권한을 필드에 압축하여 데이터베이스에 저장하여 효율성 및 보안을 향상시킬 수 있습니다.
Bindec 함수를 사용하면 부울 권한 배열을 소형 소수점 코드로 쉽게 변환하여 스토리지 및 계산을 단순화 할 수 있습니다. DECBIN 과 적절한 문자열 처리를 사용하면 권한 관리가보다 효율적이고 체계적입니다.