'在函数参数中做什么?
以下面的代码为例:
phpinfo(INFO_MODULES | INFO_ENVIRONMENT | INFO_VARIABLES);
正在使用单个参数,但我提供了由单个管道符号分隔的选项列表。
先谢谢你。
按位运算符
按位运算符修改相关值的位。 按位OR
基本上将左和右参数的每一位进行OR运算。 例如:
5 | 2
将转换为位/二进制为:
101 | 10
这将导致:
111
因为:
1 || 0 = 1
0 || 1 = 1
1 || 0 = 1
作为一个整数是7的表示,这正是你所得到的,如果你:
echo 5 | 2;
用Eddie Izzard的话......旗帜!
正如Ignacio所说,这是PHP(和其他语言)最常用的一种组合多个标志的方式。 每个标志通常定义为一个常量,其值通常设置为一个整数,该整数仅表示不同偏移量处的一个位:
define('FLAG_A', 1); /// 0001
define('FLAG_B', 2); /// 0010
define('FLAG_C', 4); /// 0100
define('FLAG_D', 8); /// 1000
然后,当你把它们OR
在一起时,它们每个都在它们自己的位偏移量上运行并且永远不会发生冲突
FLAG_A | FLAG_C
转换为:
1 | 100
所以你最终打开:
101
其中代表整数5。
然后,所有代码都必须执行 - 将对所设置的不同标志作出反应的代码如下所示(使用按位AND
):
$combined_flags = FLAG_A | FLAG_C;
if ( $combined_flags & FLAG_A ) {
/// do something when FLAG_A is set
}
if ( $combined_flags & FLAG_B ) {
/// this wont be reached with the current value of $combined_flags
}
if ( $combined_flags & FLAG_C ) {
/// do something when FLAG_C is set
}
在一天结束时,它通过命名常量使得事情更容易阅读,并且通过依赖整数值而非字符串或数组通常更为优化。 使用常量的另一个好处是,如果它们在使用时错误输入,编译器可以更好地告诉并发出警告......如果使用字符串值,则无法知道任何错误。
define('MY_FLAG_WITH_EASY_TYPO', 1);
my_function_that_expects_a_flag( MY_FLAG_WITH_EASY_TPYO );
/// if you have strict errors on the above will trigger an error
my_function_that_expects_a_flag( 'my_string_with_easy_tpyo' );
/// the above is just a string, the compiler knows nowt with
/// regard to it's correctness, so instead you'd have to
/// code your own checks.
您传递的参数是多个标志的按位或。 你可以在任何你喜欢的地方使用操作员。
链接地址: http://www.djcxy.com/p/1813.html