Web開発では、ユーザーに一連のアクセス許可を設定する必要があることがよくあります。権限のストレージと送信を簡素化するために、許可状態を整数に圧縮できます。 PHPのBINDEC関数は、バイナリ文字列を小数整数に変換するのに役立ちます。これは、許可コードのエンコードとデコードに適しています。
たとえば、ユーザーの許可ステータスを表す一連のブール値があるとします。
$permissions = [true, false, true, true];
各ブール値は許可を表し、真のことは許可を持っていることを意味し、偽は許可を持たないことを意味します。この配列を小数点以下の整数に変換して、簡単に保存して比較します。
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、第3、第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関数を使用すると、ブールの許可配列をコンパクト10進コードに簡単に変換し、ストレージと計算を簡素化できます。 Decbinと適切な文字列処理により、許可管理はより効率的かつ体系的になります。