var_dump-如何从dump PHP获取特定值
我知道有很多关于PHP-var_dump的信息,我的问题是,如果我需要从从返回不同数组对象的API接收的转储中选择特定的信息……例如下面的转储,我需要characterData数组下的领域信息,我如何选择该信息和存储在字符串变量中。非常感谢用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' (
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'];