2012-03-09 17 views
6

私は、PHPのいくつかの関数が引数としてフラグを使用していることに気付きました。普通の文字列引数の代わりにそれらをユニークにするのは何ですか?私は私自身のカスタム関数でそれらを使用したいので、私は尋ねていますが、そのプロセスが何であるかについては興味があります。関数の引数にあるPHPのフラグは何ですか?

編集:は要約すると、ときに最高のフラグでカスタム関数を作成することであるとするとき、それはないのですか?

+0

[PHP関数のフラグ、方法は?](http://stackoverflow.com/questions/3589573/php-function-flags-how) – Quentin

+0

cosntantだけで、あなたに表示されますコンテンツ。 – MetalFrog

答えて

9

これらは、数字にマップされる単なる定数です。 SORT_NUMERIC(ソート関数によって使用される定数)は、整数1です。 json_encode()ため

Check out the examples

あなたが見ることができるように、各フラグは2のn です。このように、|を使用して、複数のフラグを指定することができます。例えば

、あなたはフラグJSON_FORCE_OBJECT16または00010000)とJSON_PRETTY_PRINT128または10000000)を使用するとします。いずれかのオペランドのビットがオンの場合

ビット演算子OR(|が)上のビットをオンにします...

JSON_FORCE_OBJECT | JSON_PRETTY_PRINT 

は...内部....

00010000 | 1000000 

..です.whichが...

10010000 

であるあなたは...

でそれを確認することができます10
var_dump(base_convert(JSON_PRETTY_PRINT | JSON_FORCE_OBJECT, 10, 2)); 
// string(8) "10010000" 

CodePad

これは、両方のフラグはビット演算子でをを設定することができる方法です。

+0

また、これらは「ビットフラグ」と呼ばれます。 – BoltClock

+0

1も2^nです - つまり2^0 – bububaba

+1

@bububaba私は休暇中です、または少なくとも、それは私の言い訳です... – alex

-1

これらは値が入ったラッパーです。したがって、関数が必要とするものを気にする必要はありません。それぞれが1に設定された1ビットを持っており、0にすべての他の人がこの方法であなたはビット単位の演算子を使用して単一の整数で多くのバイナリ値を渡すことができるように

3

は、通常のフラグは、2の連続したべき乗ある整数です。詳細については、これを参照してください。information

関連する問題