我使用php代码,但在获取数组对象的值时遇到问题。当我使用var_dump($arr)
时,我得到了(以下代码经过格式化以提高可读性):
object(League\OAuth2\Client\Provider\GoogleUser)#5 (1) {
["response":protected]=> array(5) {
["emails"]=> array(1) {
[0]=> array(1) {
["value"]=> string(21) "thienlam129@gmail.com"
}
}
["id"]=> string(21) "115281634466837725533"
["displayName"]=> string(18) "thiên lâm trần"
["name"]=> array(2) {
["familyName"]=> string(6) "trần"
["givenName"]=> string(11) "thiên lâm"
}
["image"]=> array(1) {
["url"]=> string(98) "https://lh3.googleusercontent.com/-SpWfKGTcQt8/AAAAAAAAAAI/AAAAAAAAAB8/IlGQQnvy7so/photo.jpg?sz=50"
}
}
}
请告诉我如何获得电子邮件的价值。
答案 0 :(得分:0)
面临此问题的主要原因可能是因为对象根本不是数组。
如评论中所述,GoogleUser对象具有公共的getEmail方法,您可以使用该方法来检索电子邮件地址。
您可以像这样使用它:
$email = $googleUser->getEmail();
(在上面的代码示例中,我随意将其称为$googleUser
而不是$arr
,因为它不是arr而是Google用户)
答案 1 :(得分:0)
您可以像这样将对象转换为数组:
var_dump((array) $object);
或
$array = (array) $object;
并访问其所有属性,但您可能必须对walk进行数组并过滤掉类的名称。
但这是黑客,也是不良作风的一个例子。通过它的方法访问受保护的属性是一种方法,或者尽可能请求json对象。
自然,您会说
$object = (object) $inputObject;
$value = (string) $object->getValue();
或
$value = (array) $object->getArray();