代码之家  ›  专栏  ›  技术社区  ›  Robert Andrews

如何访问PHP对象的单个值?

php
  •  -1
  • Robert Andrews  · 技术社区  · 8 年前

    我正在为Email Hunter API使用以下包装器。。。

    require_once '/home/mysite/public_html/path/to/hunterio/vendor/autoload.php';
    
    use Hiraya\Hunter;
    
    $hunter = new Hunter('MY_API_KEY');
    

    他们的关键方法是。。。

    $hunter->findEmailByCompany('microsoft.com', 'Bill Gates');
    

    但我不知道如何访问和输出结果,特别是“电子邮件”字段。

    我知道以前也有人问过类似的问题,我已经研究了许多答案,但我找不到解决办法。 $hunter 是一个物体,对吗?它们对我来说是很新的。

    以下是我尝试过的一些事情。。。

    1.

    echo $hunter->findEmailByCompany('microsoft.com', 'Bill Gates');
    

    输出。。。

    " {"data"}: { "first_name": "Bill", "last_name": "Gates", "email": "bill.gates@microsoft.com", "score": 91, "domain": "microsoft ....
    

    2.

     var_dump($hunter);
    

    输出。。。

    object(Hiraya\Hunter)#25263 5) {["apiKey":protected] => string(40) ...
    

    3.

    $myobject = $hunter->findEmailByCompany('microsoft.com', 'Bill Gates');
    print_r($myobject["data"]);
    

    输出。。。

    Warning: Illegal string offset 'data' in...
    

    1号。上面的内容最接近,因为它显示属性“email”可用,似乎在“data”内。我需要访问“电子邮件”

    编辑 :

    我有点误会。。。库返回JSON。 因此,正如答案所指出的,我使用json\u decode访问元素。

    2 回复  |  直到 8 年前
        1
  •  0
  •   Ynhockey    8 年前

    问题是,什么数据类型 findEmailByCompany() 回来

    如果是JSON编码为#1的对象(不清楚, __toString() 可以以任何方式实现),则您的电子邮件位于:

    $hunter->findEmailByCompany('microsoft.com', 'Bill Gates')->email
    

    $hunter->findEmailByCompany('microsoft.com', 'Bill Gates')->data->email
    

    $hunter->findEmailByCompany('microsoft.com', 'Bill Gates')->data['email']
    

    但是,也有可能 findEmailByCompany() 有一个非公共的电子邮件字段。然后你会有一些getter方法,例如 get('email') .

    编辑: 该方法也可能只返回一个JSON字符串。在这种情况下,它大致是这样的:

    json_decode($hunter->findEmailByCompany('microsoft.com', 'Bill Gates'))->data->email
    
        2
  •  0
  •   Jirka Hrazdil    8 年前

    findEmailByCompany() 返回JSON字符串(如 source code ),您需要使用:

    $json = $hunter->findEmailByCompany('microsoft.com', 'Bill Gates');
    $result = json_decode($json);
    echo $result->data->email;
    
    推荐文章