thinkphp5 - PHP把对象转换为数组的问题

查看:1739
本文介绍了thinkphp5 - PHP把对象转换为数组的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

原始对象

object(Qiniu\Http\Error)#24 (2) {
  ["url":"Qiniu\Http\Error":private]=>
  string(25) "http://rs.qbox.me/buckets"
  ["response":"Qiniu\Http\Error":private]=>
  object(Qiniu\Http\Response)#25 (6) {
    ["statusCode"]=>
    int(-1)
    ["headers"]=>
    array(0) {
    }
    ["body"]=>
    NULL
    ["error"]=>
    string(34) "Could not resolve host: rs.qbox.me"
    ["jsonData":"Qiniu\Http\Response":private]=>
    NULL
    ["duration"]=>
    float(11.524)
  }
}

然后把这个对象转化为数组

   var_dump($this->object_array($obj));die; //$obj就是上面那个对象

   function object_array($array) {  
        if(is_object($array)) {  
            $array = (array)$array;  
         } if(is_array($array)) {  
             foreach($array as $key=>$value) {  
                 $array[$key] = $this->object_array($value);  
                 }  
         }  
         return $array;  
    }

成功转化为数组了,但问题来了,不知道为什么数组里面会多出了一些红点,导致无法读取到数组里面的值

在chrome下,把鼠标移动到红点里,显示\u0

请问应该怎样才能正确读取到里面的值?

解决方案

出现红点是因为变量是私有类型。可以用var_export看一下具体的变量名,调用即可。

namespace Qiniu\Http;
class Error{
    private $url = 'http://rs.qbox.me/buckets';
    public $status = 200;
}
$obj = new Error();
$arr = (array)$obj;
var_export($arr);
var_dump($arr["\0Qiniu\\Http\\Error\0url"], $arr['status']);

输出为

array (
  '' . "\0" . 'Qiniu\\Http\\Error' . "\0" . 'url' => 'http://rs.qbox.me/buckets',
  'status' => 200,
)string(25) "http://rs.qbox.me/buckets"
int(200)

这篇关于thinkphp5 - PHP把对象转换为数组的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆