zoukankan      html  css  js  c++  java
  • array2json()

    array2json is a PHP function that will convert the array given as its argument into a JSON string. The created JSON string will be returned. This is very useful in Ajax apps using JSON over XML. If you are using XML, you better off using my xml2array() JavaScript function.

    Note: This is an old function - if you use a new version of PHP(5.2 or newer) you will get the json_encode() function. That can be used to convert arrays to a JSON string.

    Usage

    First you need a PHP array. For example...

    $data = array(
        'success'    =>    "Sweet",
        'failure'    =>    false,
        'array'      =>    array(),
        'numbers'    =>    array(1,2,3),
        'info'       =>    array(
                            'name'    =>    'Binny',
                            'site'    =>    'http://www.openjs.com/'
                     )
    );

    Provide this array as the argument of the array2json() function...

    $json = array2json($data);

    The resulting string will be(actual output - the source says print array2json($data);)...

    
    {"success":"Sweet","failure":false,"empty_array":[],"numbers":[1,2,3],"info":{"name":"Binny","site":"http://www.openjs.com/"}}

    I am formatting the output for better readability...

    {
    	"success":"Sweet",
    	"failure":false,
    	"empty_array":{},
    	"numbers":[1,2,3],
    	"info":{
    		"name":"Binny",
    		"site":"http://www.openjs.com/"
    	}
    }

    Handled Data types

    All the basic data types are handled...

    • String
    • Numbers
    • Boolean(true/false)
    • Numerical Array
    • Associative Array

    Objects are not handled for obvious reasons.

    Code

    <?php 
    function array2json($arr) { 
        if(
    function_exists('json_encode')) return json_encode($arr); //Lastest versions of PHP already has this functionality. 
        
    $parts = array(); 
        
    $is_list false

        
    //Find out if the given array is a numerical array 
        
    $keys array_keys($arr); 
        
    $max_length count($arr)-1
        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<count($keys); $i++) { //See if each key correspondes to its position 
                
    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 
  • 相关阅读:
    如何做好不擅长的测试任务
    [ Python入门教程 ] Python中日志记录模块logging使用实例
    [ Python入门教程 ] Python中日期时间datetime模块使用实例
    cmd命令行窗口和文件目录资源管理器快速切换
    [ Python入门教程 ] Python中JSON模块基本使用方法
    [ PyQt入门教程 ] PyQt5中多线程模块QThread使用方法
    [ PyQt入门教程 ] PyQt5中数据表格控件QTableWidget使用方法
    设计模式目录
    我的软考架构师之路:目录(共22篇)
    算法篇:目录
  • 原文地址:https://www.cnblogs.com/jenry/p/3645161.html
Copyright © 2011-2022 走看看