<?php
   print_r($response->response->docs);
?>

输出以下内容:

    Array 
(
    [0] =>   
            (
                [_fields:private] => Array 
                                    (
                                        [id]=>9093 
                                        [name]=>zahir
                                    ) 
              
            ( 
                [_fields:private] => Array 
                                    (
                                        [id]=>9094 
                                        [name]=>hussain
                                    )..
            )
)

如何将此对象转换为数组?我想输出以下内容:

Array
(
    [0]=>
    (
        [id]=>9093 
        [name]=>zahir
    ) 
    [1]=>
    (
        [id]=>9094 
        [name]=>hussain
    )...
)

这可能吗?

 

实现方法一:Array

简单版本:

$array  = new Array ($ );
$array = $array ->getArrayCopy();

更新的递归版本:

class RecursiveArray  extends Array 
{
    function getArrayCopy()
    {
        $resultArray = parent::getArrayCopy();
        foreach($resultArray as $key => $val) {
            if (!is_ ($val)) {
                continue;
            }
            $o = new RecursiveArray ($val);
            $resultArray[$key] = $o->getArrayCopy();
        }
        return $resultArray;
    }
}

$array  = new RecursiveArray ($ );
$array = $array ->getArrayCopy();

 

实现方法二:

(1)一维数组

对于转换单维数组,你可以使用(array)或者使用get_ _vars

// Cast to an array
$array = (array) $ ;
// get_ _vars
$array = get_ _vars($ );

它们的工作方式略有不同。例如,get_ _vars除非从您传递的对象范围内(即在对象的成员函数中)调用,否则将返回仅具有可公开访问属性的数组。 (array)另一方面,当然,所有公共,私人和受保护的成员都会在阵列上完整地投射到一个数组,尽管现在全部公开。

 

(2)多维数组

一个有点脏的方法是使用PHP> = 5.2的本机JSON函数来编码为JSON,然后解码回数组。但是,这不包括私人和受保护的成员。

// The second parameter of json_decode forces parsing into an associative array
$array = json_decode(json_encode($ ), true);

或者,以下函数将从对象转换为包含私有成员和受保护成员的数组,从此处获取并修改为使用强制转换:

function  ToArray ($ ) {
    if(!is_ ($ ) && !is_array($ ))
        return $ ;

    return array_map(\' ToArray\', (array) $ );
}
收藏 打印