类中的php回调函数

时间:2012-08-29 13:52:04

标签: php class hosting php-5.2

由于某些原因,我们的托管公司使用PHP 5.2,甚至没有安装mysqli和PDO。

我别无选择,只能重写代码的某些部分,使其与5.2兼容。

所以,这是我的问题:

在PHP 5.2中不支持匿名函数,所以我做了以下测试以确保我正确地更改代码:

class foo{

    public function toString(){
        $arr = array("a", "b");
        $arr2 = array("c", "d");
        print_r(array_map('mapKeyValue', $arr, $arr2));
    }

    private function mapKeyValue($v, $k){
        return $k."='".$v."'";
    }
}

$foo = new foo();
echo $foo->toString();

但上面会给我:

Warning: array_map() expects parameter 1 to be a valid callback, function 'mapKeyValue' not found or invalid function name in ....
PHP Warning: array_map() expects parameter 1 to be a valid callback, function 'mapKeyValue' not found or invalid function name in ....

正确的做法是什么:

array_map('mapKeyValue', $arr, $arr2);

在课堂上?

PS:改变托管公司是否足够合理,因为他们使用PHP 5.2?(我在7个月左右就签了合同)

4 个答案:

答案 0 :(得分:19)

使用$this和数组作为回调:

array_map( array( $this, 'mapKeyValue'), $arr, $arr2);

而且,为了确定,这是tested with PHP 5.2.17并确认有效。

答案 1 :(得分:4)

尝试使用:

print_r(array_map(array($this, "mapKeyValue") , $arr, $arr2));

您需要使用$ this调用该函数。

答案 2 :(得分:0)

array_map(array($this, 'mapKeyValue'), $arr, $arr2);

答案 3 :(得分:0)

确保您的回调方法公开

public function mapKeyValue($v, $k){
    return $k."='".$v."'";
}

print_r(array_map(array($this, "mapKeyValue") , $arr, $arr2));