zoukankan      html  css  js  c++  java
  • php多层数组与对象的转换实例代码

    通过json_decode(json_encode($object)可以将对象一次性转换为数组,但是object中遇到非utf-8编码的非ascii字符则会出现问题,比如gbk的中文,何况json_encode和decode的性能也值得疑虑

    多层数组和对象转化的用途很简单,便于处理WebService中多层数组和对象的转化
    简单的(array)和(object)只能处理单层的数据,对于多层的数组和对象转换则无能为力。
    通过json_decode(json_encode($object)可以将对象一次性转换为数组,但是object中遇到非utf-8编码的非ascii字符则会出现问题,比如gbk的中文,何况json_encode和decode的性能也值得疑虑。

    代码:

    <?php
    /**
    * php多层数组与对象转换
    * 搜集整理:www.jbxue.com
    * 时间:2013-7-26
    */
    function objectToArray($d) {
    if (is_object($d)) {
    // Gets the properties of the given object
    // with get_object_vars function
    $d = get_object_vars($d);
    }
    
    if (is_array($d)) {
    /*
    * Return array converted to object
    * Using __FUNCTION__ (Magic constant)
    * for recursive call
    */
    return array_map(__FUNCTION__, $d);
    }
    else {
    // Return array
    return $d;
    }
    }
    
    function arrayToObject($d) {
    if (is_array($d)) {
    /*
    * Return array converted to object
    * Using __FUNCTION__ (Magic constant)
    * for recursive call
    */
    return (object) array_map(__FUNCTION__, $d);
    }
    else {
    // Return object
    return $d;
    }
    }
    // Useage:
    // Create new stdClass Object 
    $init = new stdClass;
    // Add some test data
    $init->foo = "Test data";
    $init->bar = new stdClass;
    $init->bar->baaz = "Testing";
    $init->bar->fooz = new stdClass;
    $init->bar->fooz->baz = "Testing again";
    $init->foox = "Just test";
    
    // Convert array to object and then object back to array
    $array = objectToArray($init);
    $object = arrayToObject($array);
    
    // Print objects and array
    print_r($init);
    echo "
    ";
    print_r($array);
    echo "
    ";
    print_r($object);
    ?>
  • 相关阅读:
    ArcSDE安装报 “contains an incorrect path”
    vs对话框"发生生成错误,是否继续并运行上次的成功生成"的设置
    修改XML节点名称
    git 常用
    mysql 执行sql流程
    DocumentBuilderFactory.newInstance() 异常解决
    samba 配置
    ajax jquery
    c++ map
    javacc jjtree 写法 以及 jj写法 基本语法 以及应用
  • 原文地址:https://www.cnblogs.com/study100/p/3237889.html
Copyright © 2011-2022 走看看