PHP中把stdClass Object转array的几个方法

神火将军
• 阅读 9694

PHP和JS通讯通常都用json,但用 json 传过来的数组并不是标准的array,而是 stdClass 类型。那么我们可以参考下面的几个方法进行转换。

方法一:

//PHP stdClass Object转array  
function object_array($array) {  
    if(is_object($array)) {  
        $array = (array)$array;  
     } if(is_array($array)) {  
         foreach($array as $key=>$value) {  
             $array[$key] = object_array($value);  
             }  
     }  
     return $array;  
}

方法二:

$array = json_decode(json_encode(simplexml_load_string($xmlString)),TRUE);

方法三:

 function object2array_pre(&$object) {
        if (is_object($object)) {
            $arr = (array)($object);
        } else {
            $arr = &$object;
        }
        if (is_array($arr)) {
            foreach($arr as $varName => $varValue){
                $arr[$varName] = $this->object2array($varValue);
            }
        }
        return $arr;
    }```


如果是10W的数据量的话,执行要进1s,结构再复杂些,可以达到3s, 性能太差了
可以用以下替换:

function object2array(&$object) {

         $object =  json_decode( json_encode( $object),true);
         return  $object;

}


 但是对json的特性,只能是针对utf8的,否则得先转码下。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java反射Array的使用
1.什么是ArrayArray是一个类的简写,全限定类名是java.lang.reflect.Array.2.Array有什么用Array可以代表所有的数组,可以通过Array动态创建与修改里面的元素.3.Array使用示例(1)创建使用静态方法newI
陈占占 陈占占
3年前
PHP 利用confirm删除指定数据库的数据
完整的效果图方法一a标签href中的是你要删除记录html<ahref"PHPtest.php?name1"onclick"returnconfirm('是否要移除该小说?')"方法二下面这个方法是js代码,点击获取id,弹出提示框,确定是否删除,confirm好像可以返回true或者falsejavascriptfunctiond
Stella981 Stella981
3年前
PHP使用array_unique对二维数组去重处理
array\_unique函数就是可以处重的,它具备了这个功能了,下面我们一来看一个关于PHP使用array\_unique对二维数组去重处理例子。php5.2.9版本增加了array\_unique对多维数组的支持,在处理多维数组是需要设置sort\_flags参数一维数组的重复项:使用array\_unique函数即可,使用实例如下:
Stella981 Stella981
3年前
PHP中的stdClass是什么?
请定义什么是stdClass。1楼stdClass是另一个很棒的PHP功能。您可以创建一个匿名PHP类。让我们来看一个例子。$pagenewstdClass();$pagename'Home';$pagestatus1;现在,您认为您还有另一个类,该类将使
Wesley13 Wesley13
3年前
CURL请求
<?php    /        发起一个HTTP(S)请求,并返回json格式的响应数据        @param array 错误信息  array($errorCode, $errorMessage)        @param string 请求Url        @para
Stella981 Stella981
3年前
Spring Boot Jackson命名策略
在SpringBoot的Jackson中我们可以使用@JsonProperty对Java属性转Json字符串的key进行指定。那么,当批量处理统一类型的格式时,@JsonProperty就显得比较麻烦了。publicclassLoginUser{@JsonProperty("user_name")priv
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
3年前
PHP中unset,array_splice删除数组中元素的区别
php(https://www.oschina.net/p/php)中删除数组元素是非常的简单的,但有时删除数组需要对索引进行一些排序要求我们会使用到相关的函数,这里我们来介绍使用unset,array\_splice删除数组中的元素区别吧如果要在某个数组中删除一个元素,可以直接用的unset,但是数组的索引不会重排:?(https://ww
Wesley13 Wesley13
3年前
PHP输出JSON,如何把空数组输出为对象
PHP输出JSON数据是非常方便的。一般情况下,PHP的一维数组输出为JSON时,会转成一个对象,也就是下面的形式:<?php$array'name''crazymus','age'18;echojson_encode($array
Wesley13 Wesley13
3年前
PHP二维数据排序,二维数据模糊查询
一、因为项目中的一个报表需要合并三个表的数据,所以分表查询再合并数据,利用PHP数组函数进行排序,搜索。三表合并后的数组结构如下:Array(0Array(history_id12sla_group_
小万哥 小万哥
1年前
NumPy 数组创建方法与索引访问详解
NumPy创建数组NumPy中的核心数据结构是ndarray,它代表多维数组。NumPy提供了多种方法来创建ndarray对象,包括:使用array()函数array()函数是最常用的方法之一,它可以将Python列表、元组甚至其他数组转换为ndarray
神火将军
神火将军
Lv1
君自故乡来,应知故乡事。
文章
3
粉丝
0
获赞
0