json 數據格式數據用得最多的是與js,flash實時交互用的,那么php怎么返回json數據格式呢,下面我來分析一下實例.
PHP實例代碼如下:
- <?php
- header('Content-type: text/json');
- $fruits = array (
- "fruits" => array("a" => "orange", "b" => "banana", "c" => "apple"),
- "numbers" => array(1, 2, 3, 4, 5, 6),
- "holes" => array("first", 5 => "second", "third")
- );
- echo json_encode($fruits);
- ?>
上面是英文是沒有問題,如果是中文就會有問題,解決辦法如下.
Json 只支持 utf-8 編碼,我認為是前端的 Javascript 也是 utf-8 的原因,代碼如下:
- <?php
- $array = array
- (
- 'title'=>iconv('gb2312','utf-8','這里是中文標題'),
- 'body'=>'abcd...'
- );
- echo json_encode($array);
- ?>
- //結果如下:
- {"title":"u8fd9u91ccu662fu4e2du6587u6807u9898","body":"abcd..."}
利用js來分析這個函數,代碼如下:
- $(function(){
- $('#send').click(function() {
- $.getJSON('json.php', function(data) {
- $('#resText').emptyempty();
- var html = '';
- $.each( data , function(commentIndex, comment) {
- html += '<div class="comment"><h6>' + comment['username'] + ':</h6><p class="para">' + comment['content'] + '</p></div>';
- })
- $('#resText').html(html);
- })
- })
- })
注意在你的php輸出js格式時我們必須是header('Content-type: text/json');這樣的頭部信息發送,后面加一個完整的可解析中文亂碼的問題程序,代碼如下:
- <?php
- /**************************************************************
- *
- * 使用特定function對數組中所有元素做處理
- * @param string &$array 要處理的字符串
- * @param string $function 要執行的函數
- * @return boolean $apply_to_keys_also 是否也應用到key上
- * @access public
- *
- *************************************************************/
- function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
- {
- static $recursive_counter = 0;
- if (++$recursive_counter > 1000) {
- die('possible deep recursion attack');
- }
- foreach ($array as $key => $value) {
- if (is_array($value)) {
- arrayRecursive($array[$key], $function, $apply_to_keys_also);
- } else {
- $array[$key] = $function($value);
- }
- if ($apply_to_keys_also && is_string($key)) {
- $new_key = $function($key);
- if ($new_key != $key) {
- $array[$new_key] = $array[$key];
- unset($array[$key]);
- }
- }
- }
- $recursive_counter--;
- }
- /**************************************************************
- *
- * 將數組轉換為JSON字符串(兼容中文)
- * @param array $array 要轉換的數組
- * @return string 轉換得到的json字符串
- * @access public
- *
- *************************************************************/
- function JSON($array) {
- arrayRecursive($array, 'urlencode', true);
- $json = json_encode($array);
- return urldecode($json);
- }
- $array = array
- (
- 'Name'=>'希亞',
- 'Age'=>20
- );
- echo JSON($array);
- ?>
新聞熱點
疑難解答