首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >var_dump -如何从dump PHP获取特定值

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

Stack Overflow用户
提问于 2013-04-25 04:56:36
回答 2查看 862关注 0票数 0

我知道有很多关于PHP - var_dump的信息,我的问题是,如果我需要从从返回不同数组object....for的接口接收的转储中挑选特定的信息,例如下面的转储,我需要characterData数组下的领域的信息,我如何挑选这些信息并存储在字符串变量中。简要的示例php代码来解释我的问题,将非常感谢…

代码语言:javascript
复制
  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。

代码语言:javascript
复制
    $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');
EN

回答 2

Stack Overflow用户

发布于 2013-04-25 05:08:41

除非您使用Reflection,否则如果您没有字段characterData的getter,您将无法访问它,因为它是私有属性

代码语言:javascript
复制
$ref = new ReflectionClass( 'Character');
$prop = $ref->getProperty( 'characterData');
$prop->setAccessible( true);
$array = $prop->getValue( $yourCharacterObject);
echo $array['realm'];

这可以用一个模拟操作的简单类来测试:

代码语言:javascript
复制
class Character {
    private $characterData;

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

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

代码语言:javascript
复制
$yourCharacterObject = new Character();
// echo $yourCharacterObject->characterData['realm']; 

这会导致:

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

但是,反射将能够获取私有值并无错误地显示它,如this demo所示,它使用上面的类和代码打印所需的属性值。

票数 2
EN

Stack Overflow用户

发布于 2013-04-25 05:03:20

Character是一个用来创建实例的类,例如:

代码语言:javascript
复制
$c = new Character();

因为characterData是私有的,所以您不能通过$c->characterData访问它

您需要使用一些公共访问函数(如getCharacterData),或者如果您在对象内部拥有访问权限,则只需根据需要更改它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16202021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档