'在函数参数中做什么?

以下面的代码为例:

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

    上一篇: ' In A Function Argument Do?

    下一篇: What is the difference between the