我知道有很多关于PHP - var_dump的信息,我的问题是,如果我需要从从返回不同数组object....for的接口接收的转储中挑选特定的信息,例如下面的转储,我需要characterData数组下的领域的信息,我如何挑选这些信息并存储在字符串变量中。简要的示例php代码来解释我的问题,将非常感谢…
object(Character)[3]
private 'name' => string 'XXXX' (length=6)
private 'region' => string 'eu' (length=2)
private 'realm' => string 'Defias Brotherhood' (length=18)
private 'characterData' =>
array (size=24)
'lastModified' => float 1363345999000
'name' => string 'Growar' (length=6)
'realm' => string 'Defias Brotherhood' (length=18)
'battlegroup' => string 'Rampage / Saccage' (length=17)基本上,这些信息都来自battlegroup。
$armory = new BattlenetArmory('EU','Defias Brotherhood');
$armory->setLocale('ru_RU');
// To reset back to default server locale
$armory->setLocale(FALSE);
//initialize the character to get the character object
$character = $armory->getCharacter('XXXX');发布于 2013-04-25 05:08:41
除非您使用Reflection,否则如果您没有字段characterData的getter,您将无法访问它,因为它是私有属性
$ref = new ReflectionClass( 'Character');
$prop = $ref->getProperty( 'characterData');
$prop->setAccessible( true);
$array = $prop->getValue( $yourCharacterObject);
echo $array['realm'];这可以用一个模拟操作的简单类来测试:
class Character {
private $characterData;
public function __construct() {
$this->characterData['realm'] = 'Defias Brotherhood';
}
}目前,其他人已经提出了这个解决方案:
$yourCharacterObject = new Character();
// echo $yourCharacterObject->characterData['realm']; 这会导致:
致命错误:无法访问第11行X中的私有属性Character::$characterData
但是,反射将能够获取私有值并无错误地显示它,如this demo所示,它使用上面的类和代码打印所需的属性值。
发布于 2013-04-25 05:03:20
Character是一个用来创建实例的类,例如:
$c = new Character();因为characterData是私有的,所以您不能通过$c->characterData访问它
您需要使用一些公共访问函数(如getCharacterData),或者如果您在对象内部拥有访问权限,则只需根据需要更改它
https://stackoverflow.com/questions/16202021
复制相似问题