数组映射在php中不起作用

时间:2012-06-11 11:36:36

标签: php mysql

我正在尝试使用此功能将丹麦语字符转换为utf

private function process_elements($element){
   $element=  strtolower ( trim ( $element ) );
   $element=  mysql_real_escape_string($element);
    return utf8_encode($element);
}

我的数组使用没有这样的编码:

Array ( [0] => Desktop [1] => imlive [2] => dk [3] => Danish [4] => Denmark [5] => http://www.google.dk/search?ie=UTF-8&oe=UTF-8&hl=da&q=imlive&adtest=on&gl=DK&glp=1&ip=0.0.0.0&pws=0&noj=1&nomo=1 [6] => ImLive - Fr�kke cam-piger [7] => Tusindvis af rigtige amat�rer live! [8] => Fra private hjem og sovev�relser [9] => dk.imlive.com [10] => ImLive - Fr�kke cam-piger [11] => dk.imlive.com [12] => Tusindvis af rigtige amat�rer live! Fra private hjem og sovev�relser [13] => ImLive - Fr�kke cam-piger - Tusindvis af rigtige amat�rer live! [14] => dk.imlive.com [15] => Fra private hjem og sovev�relser [16] => ImLive - Fr�kke cam-piger [17] => Tusindvis af rigtige amat�rer live! Fra private hjem og sovev�relser [18] => dk.imlive.com )

这是我的实施:

array_map('self::process_elements', $data);

该功能属于班级......

稍后我设置了这样的查询。例如:

        mysql_query("SET NAMES 'utf8'");
         $query="INSERT INTO advert
                 SET device='$device',
                 keyword='$keyword',
                 google_domain='$google_domain',
                 language='$language',
                 country='$country',
                 check_url='$check_url',
                 task_id=$this->task_id";

       mysql_query($query) or die(myql_error());

但它会抛出一个字符错误的异常..因为在我输入之前,它们不是utf ..为什么数组映射函数不起作用?!

3 个答案:

答案 0 :(得分:2)

看一下这个主题:Passing object method to array_map()

尝试:

array_map(array($this, $this->process_elements), $data);

答案 1 :(得分:1)

引自php.net

  

如果需要从array_map调用静态方法,则不会   工作:

     

<?PHP array_map('myclass::myMethod' , $value); ?>

     

相反,你需要这样做:

     

<?PHP array_map( array('myclass','myMethod') , $value); ?>

     

有用的是要记住这适用于任何PHP函数   需要一个回调参数。

http://php.net/manual/de/function.array-map.php

答案 2 :(得分:1)

您无法更改该数组中的初始值,因为array_map()返回一个更改值的新数组,它不会通过引用传递。

$newArray = array_map('self::process_elements', $data);