【问题标题】:setting scope of array_map php设置array_map php的范围
【发布时间】:2010-02-24 21:01:17
【问题描述】:

大家好,我不时使用array_map 来编写递归方法。例如

function stripSlashesRecursive( $value ){

    $value = is_array($value) ?
        array_map( 'stripSlashesRecursive', $value) :
    stripslashes( $value );
    return $value;
}

问题:

说我想把这个函数放在一个静态类中,我将如何使用 array_map 回到类中静态方法的范围,如 Sanitize::stripSlashesRecursive(); 我确定这很简单,但我无法弄清楚,也查看了 php.net。

【问题讨论】:

    标签: php arrays recursion array-map


    【解决方案1】:

    当使用类方法作为array_map()usort() 等函数的回调时,您必须将回调作为二值数组发送。第二个值始终是字符串形式的方法名称。第一个值是上下文(类名或对象)

    // Static outside of class context
    array_map( array( 'ClassName', 'methodName' ), $array );
    
    // Static inside class context
    array_map( array( __CLASS__, 'methodName' ), $array );
    
    // Non-static outside of object context
    array_map( array( $object, 'methodName' ), $array );
    
    // Non-static inside of object context
    array_map( array( $this, 'methodName' ), $array );
    

    【讨论】:

    • 是的...谢谢你 array_map(array(CLASS, 'stripSlashesRecursive'), $value): 正是我想要的。
    【解决方案2】:

    array_mapcallback 作为其第一个参数。

    静态方法的回调是这样写的:

    array('classname', 'methodname')
    


    这意味着,在您的具体情况下,您将使用:

    array_map(array('stripSlashesRecursive', ''), $value);
    


    有关 回调 的更多信息,请参阅 PHP 手册的这一部分:Pseudo-types and variables used in this documentation - callback

    【讨论】:

      【解决方案3】:
      array_map( array('Sanitize', 'stripSlashesRecursive'), $value) ...
      

      【讨论】:

        猜你喜欢
        • 2011-07-27
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 1970-01-01
        • 2015-08-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多