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

时间:2018-03-04 07:54:19

标签: php

我正在使用以下电子邮件搜索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.最接近,因为它显示属性“电子邮件”可用,似乎在“数据”内。我需要访问“电子邮件”。

修改

我的误解......库返回JSON。 因此,正如答案所指出的,我使用json_decode访问一个元素。

2 个答案:

答案 0 :(得分:0)

问题是,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

答案 1 :(得分:0)

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

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