二进制交叉权限微型php类分享_php实例
靓点:
1、多对多交叉场景分配;
2、php新特性-闭包使用、批处理函数array_walk/array_flip使用;
3、位运算&使用案例;
使用场景:
1、常见增删改查(2的N次方值入库);
2、认证、第三方账号绑定、多分类选择;
class s_allow{
//声明使用场景,任务清单
public $scene,$case_list=array();
//声明指定用户角色、允许值、允许清单
public $allow_value=0,$allow_list=array();
//初始化场景、角色
function __construct($scene,$allow_value=0){
$this->scene=$scene;
$this->case_list=$this->case_list(true);
if ($allow_value) {
$this->allow_value=$allow_value;
$this->allow_list=$this->allow_list($allow_value,true);
}
}
//取得全部任务清单
function case_list($mode=false){
$case_list=config($this->scene,'allow');
return $mode ? $case_list : array_keys($case_list);
}
//取得用户任务清单
function allow_list($allow_value=0,$mode=false){
$buffer=array();
foreach ($this->case_list as $key=>$value) {
if ($allow_value & pow(2,$key-1)) {
$buffer[$key]=$value;
}
}
return $mode ? $buffer : array_keys($buffer);
}
//计算允许值
function allow_value($allow_list=null){
if ($allow_list==null) $allow_list=$this->allow_list;
array_walk($allow_list, function($value,$key) use(&$allow_list){
$allow_list[$key]=pow(2,$value-1);
});
return array_sum($allow_list);
}
//判断是否允许
function is_allow($case){
$case_list=array_flip($this->case_list);
return (bool)($this->allow_value & pow(2,$case_list[$case]-1));
}
}
[access]
1=add
2=del
3=read
4=list
5=mod
6=detail
7=pub
8=collect
9=like
10=send
[cert]
1=email
2=tel
3=qq
4=identity_card
5=real_name
6=business_license
[bind]
1=qq
2=weibo
3=taobao
4=alipay
5=renren
6=weichat
7=baidu

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









2 進数演算は 2 進数に基づいた演算方法であり、その基本演算には加算、減算、乗算、除算が含まれます。 2 進算術には、基本的な演算に加えて、論理演算、変位演算、その他の演算も含まれます。論理演算には AND、OR、NOT などの演算が含まれ、変位演算には左シフト演算と右シフト演算が含まれます。これらの操作には、対応するルールとオペランド要件があります。

EDVAC には 2 つの大きな改良点があります。1 つはバイナリの使用、もう 1 つは保存されたプログラムの完成です。これは、あるプログラム命令から次のプログラム命令に自動的に進み、その操作は命令を通じて自動的に完了できます。 「命令」にはデータやプログラムが含まれており、それらはコードの形で機械の記憶装置に入力されます、つまり、データを格納する同じ記憶装置を使用して、演算を実行するための命令を格納するという新しい概念です。 - 保存されたプログラムと呼ばれます。

2 進数は 1 と 0 で表されます。 16 ビットの 16 進数体系は、2 進表現から 16 進表現に変換するために、{0,1,2,3…..9,A(10),B(11),…F(15)} となります。文字列 ID は、最下位側から始まるニブルと呼ばれる 4 ビットのチャンクにグループ化されます。各ブロックは、対応する 16 進数に置き換えられます。 16 進数と 2 進数の表現を明確に理解するために例を見てみましょう。 001111100101101100011101 3 E 5 B&N

Golang でバイナリ ファイルを読み取るにはどうすればよいですか?バイナリ ファイルは、コンピュータが認識して処理できるデータを含む、バイナリ形式で保存されたファイルです。 Golang では、いくつかのメソッドを使用してバイナリ ファイルを読み取り、必要なデータ形式に解析できます。 Golangでバイナリファイルを読み込む方法と具体的なコード例を紹介します。まず、OS パッケージの Open 関数を使用してバイナリ ファイルを開く必要があります。これにより、ファイル オブジェクトが返されます。それから私たちは作ることができます

コンピュータが 2 進法を使用する主な理由: 1. コンピュータは論理回路で構成されています。論理回路には通常、スイッチのオンとオフの 2 つの状態しかなく、これら 2 つの状態は「1」と「0」で表すことができます。 . 2 進法では 0 と 1 の 2 つの数値のみが使用されるため、送信時や処理時にエラーが発生しにくく、コンピュータの信頼性が高くなります。

タイトル: Go 言語で 16 進数を 2 進数に変換する方法を簡単に学習します。特定のコード例が必要です。コンピューター プログラミングでは、異なる基数間の変換操作がよく使用されます。その中でも、16 進数と 2 進数間の変換は比較的一般的です。 Go 言語では、いくつかの簡単なコード例を通じて 16 進数から 2 進数への変換を実現できます。一緒に学びましょう。まずは16進数と2進数の表現方法を見てみましょう。 16 進数は数値を表す方法で、0 ~ 9 と A ~ F を使用して 1 を表します。

コンピューターでは負の数は 2 の補数を使用して表現されます。つまり、負の数は正の数の 2 の補数によって表現されます。

Golang はバイナリ ファイルを扱えますか? Go 言語では、バイナリ ファイルの処理は非常に一般的で便利です。組み込みのパッケージとメソッドを使用することで、バイナリ ファイルの読み取り、書き込み、操作を簡単に行うことができます。この記事では、Go でバイナリ ファイルを処理する方法を説明し、具体的なコード例を示します。バイナリ ファイルの読み取り バイナリ ファイルを読み取るには、まずファイルを開いて、対応するファイル オブジェクトを作成する必要があります。次に、Read メソッドを使用してファイルからデータを読み取り、それをバイト単位で保存します。
