2010-10-12 39 views
9

$ jobs là một mảng được truy xuất từ ​​truy vấn DB. print_r($jobs) show:Áp dụng một hàm tất cả các giá trị trong một mảng

Id
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 
) 

vv ...

muốn chạy utf8_encode() trên tất cả các giá trị của các mảng. Tôi không chắc chắn nếu tôi nên sử dụng array_map, array_walk_recursive? Đầu ra không được thay đổi tên của các khóa mảng sao cho tôi không cần phải thay đổi bất cứ điều gì trong mẫu của mình, do đó,

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

vẫn hoạt động, mặc dù đã được mã hóa.

EDIT: Tôi đang cố gắng điều sau đây, không may mắn

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

array_walk_recursive($jobs, 'fix_chars'); 
+0

xem câu trả lời của tôi. & trước khi mục $ là rất quan trọng. – ITroubs

+1

Về cơ bản, sự khác biệt giữa 'array_map' và' array_walk' là trước đây trả về một mảng mới, trong khi thứ hai sẽ thay đổi mảng tại chỗ. Bạn muốn gì? –

Trả lời

23

này nên làm việc:

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

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

điều này thay đổi mục của mảng trực tiếp cho phép khóa vì nó là – ITroubs

+0

hoạt động, cảm ơn ITroubs – stef

6

Dưới đây là một ví dụ với array_map():

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

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

tôi không nếu có sự khác biệt về hiệu năng giữa array_maparray_walk_recursive.

+0

Cảm ơn @Felix King I cũng đang đối mặt với cùng một vấn đề và bây giờ nó giải quyết 'array_map ('utf8_encode', $ array); tôi. – user3833682

Các vấn đề liên quan