我确定在某个地方之前一定要问过,但我找不到答案:
如何从本机php函数的回调参数中引用Codeigniter函数的名称,例如array_map()?
举个简单的例子,我的代码在我的内部CI_Controller:
function test(){
    $row = array('foo', 'bar');
    $new_row = array_map('do_the_mapping', $row);
    echo $new_row[0];
}
function do_the_mapping($row){
    return($row . $row);
}
do_the_mapping()没有找到第二个功能.那么我该如何正确引用呢?
Mar*_*ark 10
因为do_the_mapping是一个对象的方法,而不是一个全局函数(这是你所暗示的使用array_map('do_the_mapping'...,你必须将数组传递给array_map第一个参数中的函数.
此数组必须包含两个项目,第一个(索引0)是对对象实例的引用,第二个(索引1)是方法名称的字符串表示形式.
例如,如果您的控制器类似于以下内容:
class Some_page extends CI_Controller {
    public function test()
    {
        $row = array('foo', 'bar');
        $new_row = array_map('do_the_mapping', $row);
        echo $new_row[0];
    }
    public function do_the_mapping($row)
    {
        return($row . $row);
    }
}
你必须改变这个:
array_map('do_the_mapping', $row)
对此:
array_map(array($this, 'do_the_mapping'), $row);
如果要调用另一个对象的方法,只需更改$this为对该对象实例的引用即可.