2017-02-09 82 views
1

У меня есть следующий массив массивов:json_encode массив PHP

array(1) { 
    [0]=> 
    array(2) { 
    [0]=> 
    array(2) { 
     [0]=> 
     string(3) "abc" 
     [1]=> 
     string(3) "įāē" 
    } 
    [1]=> 
    array(2) { 
     [0]=> 
     string(3) "čaē" 
     [1]=> 
     string(3) "qwe" 
    } 
    } 
} 

Я использую сильфон код для эхо результат на странице:

echo json_encode($array); 

я получаю следующий результат на страница:

[[["abc",null],[null,"qwe"]]] 

Каждая строка со специальным символом преобразуется в нуль. Так I've пытались utf8_encode на каждом из элементов массива:

foreach($array as &$subarray1){ 
    foreach($subarray1 as &$subarray2){ 
     foreach($subarray2 as &$subarray3){ 
      $subarray3 = utf8_encode($subarray3); 
     } 
    } 
} 

Но я получаю следующий результат:

[[["abc","\u00e1\u00e2\u00e7"],["\u00e8a\u00e7","qwe"]]] 

Что такое правильный способ кодирования это?

+0

* "\ u00e1" * означает * "į" * – Nytrix

ответ

3

json_encode поддерживает второй параметр, так что вы можете использовать константу JSON_UNESCAPED_UNICODE как следующее:

$arr = [ 
    0 => [0 => "abc", 1 => "įāē"], 
    1 => [0 => "čaē", 1 => "qwe"] 
]; 

echo json_encode($arr, JSON_UNESCAPED_UNICODE); 

Вы можете найти рабочую демо здесь:https://ideone.com/J5bvT5