thinkphp5 - PHP把对象转换为数组的问题
本文介绍了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屋!
查看全文