我想对数组使用iconv函数


i want to use iconv function for array?

这是我的数组:

$array = array(
                'name' => $burcname . ' Günlük yorumum',
                'link' => 'http://apps.facebook.com/gunlukburcpaylas/sonuc.php?burc='. $burc,
                'description' => $burcname . ' Günlük yorumu. Sizde her gün profilinizde günlük burç yorumunuz için uygulamaya katılın..',
                'message' => $aciklama,
                'picture' => $picture
                );

iconv as: $example = iconv('UTF-8','ISO-8859-9',$array);

但这是数组。不要工作。我能做什么?

您需要迭代数组内容,或者使用array_walk这样的函数。

Foreach loop (untesting)

foreach(array_keys($array) as $key){
    $array[$key] = iconv('UTF-8','ISO-8859-9', $array[$key]);
}  

在本例中需要使用array_keys的原因是因为没有保留对$value进行foreach($array as $key => $value)foreach($array as $value)修改的标准foreach循环。

使用array_walk(未测试)

function convert(&$value, $key){
    $value = iconv('UTF-8','ISO-8859-9', $value);
}
array_walk($array, 'convert');

如果你使用的是PHP> 5.3,那么你可以使用lambda函数。

array_walk_deep function(已测试)

$array = array("a",
    array("b",
      array("c",
        "d"
      )
    )
);
function array_walk_deep(&$items,$func){
    foreach ($items as &$item) {
        if(is_array($item))
          array_walk_deep($item,$func);
        else
          $item = $func($item);
    }
}
array_walk_deep($array, 'strtoupper');
print_r($array);

另一个解决方案是通过引用而不是通过值返回foreach的结果:

foreach( $array as &$value ) {
  $value = iconv( 'UTF-8','ISO-8859-9', $value );
}

value变量前面的'&'允许您使用实际的数组值而不是副本。:)