var_dump-如何从dump PHP获取特定值

var_dump-如何从dump PHP获取特定值,php,arrays,api,var-dump,Php,Arrays,Api,Var Dump,我知道有很多关于PHP-var_dump的信息,我的问题是,如果我需要从从返回不同数组对象的API接收的转储中选择特定的信息……例如下面的转储,我需要characterData数组下的领域信息,我如何选择该信息和存储在字符串变量中。非常感谢用php代码的简短示例来解释我的问题 object(Character)[3] private 'name' => string 'XXXX' (length=6) private 'region' => string 'eu' (

我知道有很多关于PHP-var_dump的信息,我的问题是,如果我需要从从返回不同数组对象的API接收的转储中选择特定的信息……例如下面的转储,我需要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)
基本上,这些信息来自战斗群api

    $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');

Character
是从中创建实例的类-例如:

$c = new Character();
由于
characterData
是私有的,您不能通过
$c->characterData


您需要使用一些公共访问功能(如
getCharacterData
),或者如果您在对象内部具有访问权限,则根据您的需要对其进行更改如果您没有字段
characterData
的getter,您将无法访问它,因为它是私有属性,除非您使用:

这可以通过模拟OPs的简单类进行测试:

class Character {
    private $characterData;

    public function __construct() {
        $this->characterData['realm'] = 'Defias Brotherhood';
    }
}
目前,其他人提出了此解决方案:

$yourCharacterObject = new Character();
// echo $yourCharacterObject->characterData['realm']; 
其结果是:

致命错误:无法访问第11行X中的私有属性字符::$characterData


但是,反射将能够获取私有值并显示它而不会出错,如中所示,它使用上述类和代码打印所需的属性值。

字符对象的定义将为您提供更多信息。也许它有一个方法可以让你获取
characterData
。我仍然收到一个错误致命错误:未捕获的异常“ReflectionException”,在C:\wamp\www\apiX.php的第63行(!)显示消息“Cannot access non-public member Character::characterData”ReflectionException:无法在线访问C:\wamp\www\apiX.php中的非公共成员Character::characterData63@ShoaibSuleman确保调用
$prop->setAccessible(true)。谢谢…我设法让它工作。你能告诉我如何访问非公共的元素吗?实际上,现在我正在尝试访问非公共的对象统计信息,但它说统计信息无效。我是说它是公共的,它抱怨统计信息对象不存在策略,但没有getCharacterDataso使用像@nickb提供的反射
$yourCharacterObject = new Character();
// echo $yourCharacterObject->characterData['realm'];