php-如何从数组对象获取值

时间:2018-09-18 15:48:48

标签: php

我使用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"
        }
    }
}

请告诉我如何获得电子邮件的价值。

2 个答案:

答案 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();