实际上我无法将php对象转换为数组,特别是当我有其他访问说明符时。 例如:
<?php
class Foo
{
public $bar = 'barValue';
protected $baz = 'bazValue';
private $tab = 'tabValue';
}
$foo = new Foo();
$arrayFoo = (array) $foo;
echo "<pre>";
var_dump($arrayFoo);
,输出为:
array(3) {
["bar"]=>
string(8) "barValue"
["*baz"]=>
string(8) "bazValue"
["Footab"]=>
string(8) "tabValue"
}
因此我无法获取其名称的密钥,它自动添加*(用于受保护的)和类名(用于私有),
答案 0 :(得分:2)
您可以使用get_object_vars
PHP documentation的评论中提到的功能:
function obj2array ( &$Instance ) {
$clone = (array) $Instance;
$rtn = array ();
$rtn['___SOURCE_KEYS_'] = $clone;
while ( list ($key, $value) = each ($clone) ) {
$aux = explode ("\0", $key);
$newkey = $aux[count($aux)-1];
$rtn[$newkey] = &$rtn['___SOURCE_KEYS_'][$key];
}
return $rtn;
}