0

我知道有很多关于 PHP 的可用信息 - var_dump 我的问题是我是否需要从我从返回不同数组对象的 API 接收的转储中选择特定信息....例如下面的转储我需要 characterData 数组下的领域信息我如何选择该信息并存储在 String 变量中。解释我的问题的 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 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');
4

2 回答 2

2

如果您没有该 field 的吸气剂,则characterData您将无法访问它,因为它是私有财产,除非您使用Reflection

$ref = new ReflectionClass( 'Character');
$prop = $ref->getProperty( 'characterData');
$prop->setAccessible( true);
$array = $prop->getValue( $yourCharacterObject);
echo $array['realm'];

这可以用一个模仿 OP 的简单类来测试:

class Character {
    private $characterData;

    public function __construct() {
        $this->characterData['realm'] = 'Defias Brotherhood';
    }
}

目前,其他人提出了这个解决方案:

$yourCharacterObject = new Character();
// echo $yourCharacterObject->characterData['realm']; 

结果是:

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

但是,Reflection 将能够获取私有值并正确显示它,如本演示所示,它使用上述类和代码打印所需的属性值。

于 2013-04-24T21:08:40.847 回答
0

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

$c = new Character();

因为characterData是私人的,你不能通过它访问它$c->characterData

您需要使用一些公共访问功能(例如getCharacterData),或者如果您可以访问对象内部,只需根据您的需要进行更改

于 2013-04-24T21:03:19.503 回答