PHP对象未转换为数组[重复]
Posted
技术标签:
【中文标题】PHP对象未转换为数组[重复]【英文标题】:Php object not converting to array [duplicate] 【发布时间】:2016-10-11 01:28:06 【问题描述】:实际上我无法将 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"
所以我无法获取带有名称的密钥,它会自动添加 *(用于受保护)和类名(用于私有),
【问题讨论】:
因为你已经定义了变量 protected 和 private 这就是为什么它给出 * ,脚在数组索引中...... 这是一个特性,而不是一个错误 【参考方案1】:get_object_vars
PHP documentation 可以使用 cmets 中提到的函数:
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;
【讨论】:
以上是关于PHP对象未转换为数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章