在数组中应用函数的所有值

时间:2010-10-12 08:51:50

标签: php

$ jobs是从数据库查询中检索的数组。 print_r($jobs)显示:

Array
(
    [ID] => 131
    [Title] => -bla-
    [Baseline] => lorem ipsum ...
    [Description] => <ul><li>list 1</li><li>list 2</li></ul>
    [EventID] => 1008
)
Array
(
    [ID] => 132
    [Title] => -bla 2-
    [Baseline] => lorem ipsum lorem ipsum...
    [Description] => <ul><li>list 1</li><li>list 2</li></ul>
    [EventID] => 1009
)
等等......

我想在这些数组的所有值上运行utf8_encode()。我不确定我是否应该使用array_map,array_walk_recursive?输出不应该改变数组键的名称,这样我就不需要在模板中更改任何内容,所以

<h1><?=$j['title']?></h1>

应该仍然有效,尽管是utf8编码的。

编辑:我正在尝试以下,没有运气

function fix_chars($key, $value)
{
    return utf8_encode($value);
}

array_walk_recursive($jobs, 'fix_chars');

2 个答案:

答案 0 :(得分:23)

这应该有效:

<?php
function encode_items(&$item, $key)
{
    $item = utf8_encode($item);
}

array_walk_recursive($jobs, 'encode_items');
?>

答案 1 :(得分:6)

以下是array_map()的示例:

function utf8_encode_array($array) {
    return array_map('utf8_encode', $array);
}

$encoded_array = array_map('utf8_encode_array', $your_array);

我不知道array_maparray_walk_recursive之间是否存在性能差异。