zoukankan      html  css  js  c++  java
  • php简单对象与数组的转换函数代码(php多层数组和对象的转换)

    function arrayToObject($e){
    if( gettype($e)!='array' ) return;
    foreach($e as $k=>$v){
    if( gettype($v)=='array' || getType($v)=='object' )
    $e[$k]=(object)arrayToObject($v);
    }
    return (object)$e;
    }

    function objectToArray($e){
    $e=(array)$e;
    foreach($e as $k=>$v){
    if( gettype($v)=='resource' ) return;
    if( gettype($v)=='object' || gettype($v)=='array' )
    $e[$k]=(array)objectToArray($v);
    }
    return $e;
    }

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

    下面上代码:

    复制代码 代码如下:


    <?php

    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 "\n";
    print_r($array);
    echo "\n";
    print_r($object);
    ?>

    作者:少帅

    出处:少帅的博客--http://www.cnblogs.com/wang3680

    您的支持是对博主最大的鼓励,感谢您的认真阅读。

    本文版权归作者所有,欢迎转载,但请保留该声明。

    支付宝 微信
  • 相关阅读:
    机器学习的定义和分类
    选股
    mysql修改密码
    快速排序
    php的错误类型
    MySQL数据库优化
    库存超卖问题
    循环处理
    kafka安装配置
    JavaScript、jQuery杂记
  • 原文地址:https://www.cnblogs.com/wang3680/p/2970134.html
Copyright © 2011-2022 走看看