3

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

function stripSlashesRecursive( $value ){

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

问题:

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

4

3 回答 3

15

当使用类方法作为函数的回调时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 );
于 2010-02-24T21:06:58.733 回答
1

array_map回调作为其第一个参数。

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

array('classname', 'methodname')


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

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


有关回调的更多信息,请参阅 PHP 手册的这一部分:本文档中使用的伪类型和变量 - 回调

于 2010-02-24T21:04:09.130 回答
0
array_map( array('Sanitize', 'stripSlashesRecursive'), $value) ...
于 2010-02-24T21:05:16.133 回答