【问题标题】:php getting data from an array of objectsphp从对象数组中获取数据
【发布时间】:2017-10-01 21:03:55
【问题描述】:

我正在尝试使用一个 php 函数,它返回一个变量 $historicalData,它是一个对象数组。变量的var_dump是:

  [0]=>
  object(Scheb\YahooFinanceApi\Results\HistoricalData)#40 (7) {
    ["date":"Scheb\YahooFinanceApi\Results\HistoricalData":private]=>
    object(DateTime)#22 (3) {
      ["date"]=>
      string(26) "2017-09-28 00:00:00.000000"
      ["timezone_type"]=>
      int(3)
      ["timezone"]=>
      string(3) "UTC"
    }
    ["open":"Scheb\YahooFinanceApi\Results\HistoricalData":private]=>
    float(153.889999)
    ["high":"Scheb\YahooFinanceApi\Results\HistoricalData":private]=>
    float(154.279999)
    ["low":"Scheb\YahooFinanceApi\Results\HistoricalData":private]=>
    float(152.699997)
    ["close":"Scheb\YahooFinanceApi\Results\HistoricalData":private]=>
    float(153.279999)
    ["adjClose":"Scheb\YahooFinanceApi\Results\HistoricalData":private]=>
    float(153.279999)
    ["volume":"Scheb\YahooFinanceApi\Results\HistoricalData":private]=>
    int(21958200)
  }
  [1]=>
  object(Scheb\YahooFinanceApi\Results\HistoricalData)#20 (7) {
    ["date":"Scheb\YahooFinanceApi\Results\HistoricalData":private]=>
    object(DateTime)#30 (3) {
      ["date"]=>
      string(26) "2017-09-29 00:00:00.000000"
      ["timezone_type"]=>
      int(3)
      ["timezone"]=>
      string(3) "UTC"
    }
    ["open":"Scheb\YahooFinanceApi\Results\HistoricalData":private]=>
    float(153.210007)
    ["high":"Scheb\YahooFinanceApi\Results\HistoricalData":private]=>
    float(154.130005)
    ["low":"Scheb\YahooFinanceApi\Results\HistoricalData":private]=>
    float(152)
    ["close":"Scheb\YahooFinanceApi\Results\HistoricalData":private]=>
    float(154.119995)
    ["adjClose":"Scheb\YahooFinanceApi\Results\HistoricalData":private]=>
    float(154.119995)
    ["volume":"Scheb\YahooFinanceApi\Results\HistoricalData":private]=>
    int(26299810)
  }
}

如何从这个对象数组中提取数据。例如打印“日期”和“关闭”?

更新:我使用了以下代码: 目录。 '/vendor/autoload.php';

use Scheb\YahooFinanceApi\ApiClient;
use Scheb\YahooFinanceApi\ApiClientFactory;
use GuzzleHttp\Client;

// Create a new client from the factory
$client = ApiClientFactory::createApiClient();

// Returns an array of Scheb\YahooFinanceApi\Results\HistoricalData
$historicalData = $client->getHistoricalData("AAPL", ApiClient::INTERVAL_1_DAY, new \DateTime("-3 days"), new \DateTime("today"));

echo $historicalData[0]['date'];

?>

并收到以下错误消息:

PHP 致命错误:无法在第 14 行的 stack.php 中使用 Scheb\YahooFinanceApi\Results\HistoricalData 类型的对象作为数组

【问题讨论】:

  • 这几乎是“我如何 PHP?”因此它建议您需要熟悉该语言的基础知识。以the section on arrays开头。
  • 将变量赋值给数组 $array = array();然后调用值$array['date'];
  • 我了解数组。当对象被放入数组中时,我会迷路。

标签: php arrays


【解决方案1】:

要调用 PHP 关联数组,您需要为所述数组定义一个变量。

例如;

$MyArray = array('name' => 'Levi','Date' => '10/1/2017','Day' => 'Sunday');

获取名字

echo $MyArray['name'];

或一天

echo $MyArray['Day'];

在你的情况下,你会想要 echo $MyArray[0]['date'];echo $MyArray[0]['close'];

【讨论】:

  • 感谢您的快速回复。但是,我收到一条错误消息。使用代码和错误消息更新了原始问题。
【解决方案2】:

我从来不知道如何读取数组中的对象。但是,我发现了这个code,它将递归地将数组中的对象转换为数组。我设法通过这种方式提取数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 2017-10-06
    • 2021-02-04
    • 2021-09-14
    相关资源
    最近更新 更多