数组映射+类方法/函数作为回调+ call_user_func

时间:2012-09-10 10:50:36

标签: php arrays class map array-map

我不知道我在下面的代码中做错了什么但它没有用。

if($_data_count = count($_csv_raw_array) > 0){
            foreach($_csv_raw_array as $_csv_row){
                array_push($this->_data, array_map(call_user_func(array($this, 'replace')), $_csv_row));
            }
            return $this->result(true, 'CSV parsing done.', '', $this->_data);
        }

//替换功能是:

    private function replace($_value){
    return preg_match('/(\r\n|\n|\r)/', $_value) ? '' : $_value;
}

但我不知道它为什么不起作用并引发异常:

遇到PHP错误

严重性:警告

消息:导入:: replace()

缺少参数1

文件名:libraries / Import.php

行号:116

基本上我想要的是导入我已经导入的CSV文件,现在我想替换数组中存在的任何新行字符替换为空(无)。但每次执行此代码时都会抛出异常。你能在那里建议的人吗?请。

感谢名单

1 个答案:

答案 0 :(得分:0)

正如评论中指出的那样,根据您的代码判断,您将要删除call_user_func,因为这会导致函数立即被调用,而这似乎不是您想要的,我认为是在每次迭代中过滤掉$ _csv_row中的所有元素:

if($_data_count = count($_csv_raw_array) > 0){
    foreach($_csv_raw_array as $_csv_row){
        array_push($this->_data, array_map(array($this, 'replace'), $_csv_row));
    }
    return $this->result(true, 'CSV parsing done.', '', $this->_data);
}

我们只能猜测你的意图是什么,你可能想提供一个示例csv和所需的输出,这样我们就能更准确地理解你在寻找什么,如果这不能解决问题。