PHP 轉換Array爲Json數據函數

原文php

http://www.bin-co.com/php/scripts/array2json/html

函數以下:正則表達式

 

function arrayToJson($arr) {數據庫

    if(function_exists('json_encode')) return json_encode($arr); //Lastest versions of PHP already has this functionality.json

    $parts = array();安全

    $is_list = false;oracle


    //Find out if the given array is a numerical array函數

    $keys = array_keys($arr);post

    $max_length = count($arr)-1;this

    if(($keys[0] == 0) and ($keys[$max_length] == $max_length)) {//See if the first key is 0 and last key is length - 1

        $is_list = true;

        for($i=0; $i

            if($i != $keys[$i]) { //A key fails at position check.

                $is_list = false; //It is an associative array.

                break;

            }

        }

    }


    foreach($arr as $key=>$value) {

        if(is_array($value)) { //Custom handling for arrays

            if($is_list) $parts[] = array2json($value); /* :RECURSION: */

            else $parts[] = '"' . $key . '":' . array2json($value); /* :RECURSION: */

        } else {

            $str = '';

            if(!$is_list) $str = '"' . $key . '":';


            //Custom handling for multiple data types

            if(is_numeric($value)) $str .= $value; //Numbers

            elseif($value === false) $str .= 'false'; //The booleans

            elseif($value === true) $str .= 'true';

            else $str .= '"' . addslashes($value) . '"'; //All other things

            // :TODO: Is there any more datatype we should be in the lookout for? (Object?)


            $parts[] = $str;

        }

    }

    $json = implode(',',$parts);


    if($is_list) return '[' . $json . ']';//Return numerical JSON

    return '{' . $json . '}';//Return associative JSON

}

使用方法:

$dataArr = array(

'aaa' => array(

1,2,3

),

'bbb' => array(

'b_1' => "222",

'b_2' => "555",

'b_3' => array(

'a' => 1,

'b' => 2,

'c' => 3

)

)

);

echo arrayToJson($dataArr);

 

 

 


收藏到: Del.icio.us


相關文章
相關標籤/搜索