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

输出如下:

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

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

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

这可能吗?


当前回答

你应该看看get_object_vars,因为你的属性是私有的,你应该在类中调用它并返回它的结果。

小心,对于像字符串这样的原始数据类型,它会工作得很好,但我不知道它对嵌套对象如何表现。

在你的情况下,你必须这样做;

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

其他回答

你应该看看get_object_vars,因为你的属性是私有的,你应该在类中调用它并返回它的结果。

小心,对于像字符串这样的原始数据类型,它会工作得很好,但我不知道它对嵌套对象如何表现。

在你的情况下,你必须这样做;

<?php
   print_r(get_object_vars($response->response->docs));
?>
$array = json_decode(json_encode($object), true);

我尝试了几种方法来做一个对象的foreach,这真的是我所见过的最简单和最酷的方法。只有一行:)

简单的版本:

$arrayObject = new ArrayObject($object);
$array = $arrayObject->getArrayCopy();

更新的递归版本:

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

$arrayObject = new RecursiveArrayObject($object);
$array = $arrayObject->getArrayCopy();

试试这个:

 <?php
  print_r(json_decode(json_encode($response->response->docs),true));
 ?>
//My Function is worked. Hope help full for you :)
      $input = [
            '1' => (object) [1,2,3],
            '2' => (object) [4,5,6,
                (object) [6,7,8,
                [9, 10, 11,
                    (object) [12, 13, 14]]]
            ],
            '3' =>[15, 16, (object)[17, 18]]
        ];

        echo "<pre>";
        var_dump($input);
        var_dump(toAnArray($input));

      public function toAnArray(&$input) {

        if (is_object($input)) {
            $input = get_object_vars($input);
        }
        foreach ($input as &$item) {
            if (is_object($item) || is_array($item)) {
                if (is_object($item)) {
                    $item = get_object_vars($item);
                }
                self::toAnArray($item);
            }
        }
    }