使用PHP循环JSON
我需要在PHP中循环使用以下JSON使用PHP循环JSON,php,arrays,json,Php,Arrays,Json,我需要在PHP中循环使用以下JSON { "page": 1, "perPage": 3, "count": 607, "status": "OK", "tickers": [ { "ticker": "A", "name": "Agilent Technologies In
{
"page": 1,
"perPage": 3,
"count": 607,
"status": "OK",
"tickers": [
{
"ticker": "A",
"name": "Agilent Technologies Inc.",
"market": "STOCKS",
"locale": "US",
"type": "CS",
"currency": "USD",
"active": true,
"primaryExch": "NYE",
"updated": "2020-12-15",
"codes": {
"cik": "0001090872",
"figiuid": "EQ0087231700001000",
"scfigi": "BBG001SCTQY4",
"cfigi": "BBG000C2V3D6",
"figi": "BBG000C2V3D6"
},
"url": ""
},
{
"ticker": "AA",
"name": "Alcoa Corporation",
"market": "STOCKS",
"locale": "US",
"type": "CS",
"currency": "USD",
"active": true,
"primaryExch": "NYE",
"updated": "2020-12-15",
"codes": {
"cik": "0001675149",
"figiuid": "EQ0000000045469815",
"scfigi": "BBG00B3T3HF1",
"cfigi": "BBG00B3T3HD3",
"figi": "BBG00B3T3HD3"
},
"url": ""
},
{
"ticker": "WADV",
"name": "Wireless Advantage Inc Common Stock",
"market": "STOCKS",
"locale": "US",
"type": "CS",
"currency": "USD",
"active": true,
"primaryExch": "GREY",
"updated": "2020-03-30",
"codes": {
"figiuid": "EQ0010295500001000",
"scfigi": "BBG001S87270",
"cfigi": "BBG000DKG4K2",
"figi": "BBG000DKG4K2"
},
"url": ""
}
]
}
这是我的循环函数——我只需要每个嵌套数组中的“ticker”
public function getTickers()
{
$APIKey = "API_KEY";
$tickers_request = 'API_URL';
$session = curl_init($tickers_request);
curl_setopt($session, CURLOPT_HEADER, true);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($session);
curl_close($session);
$json = substr($response, strpos($response, "{"));
$result = json_decode($json, true);
$ticker =[];
foreach($result as $results)
{
foreach ($results['tickers'] as $ticker)
{
$ticker['ticker'] = $results['ticker'];
}
}
return $ticker;
}
我在PHP中收到这两个错误-
A PHP Error was encountered
Severity: Warning
Message: Invalid argument supplied for foreach()
Severity: Notice
Message: Array to string conversion
我的功能有什么问题?我是一名经验丰富的PHP开发人员,但可能我遗漏了一些东西…您提取数据的循环没有在正确的级别访问数据,您只需要一个循环,它在
tickers
数组上循环,然后将每个ticker元素添加到新数组中(不确定您希望分配的是什么)
您提取数据的循环没有访问正确级别的数据,您只需要一个循环,它在
ticker
数组上循环,然后将每个ticker元素添加到新数组中(不确定您希望分配做什么)
你的代码没有意义。首先,你不需要第一个foreach。你所需要的只是
$result = json_decode($json, true);
$tickers =[];
foreach ($result['tickers'] as $results)
{
$tickers[] = $results['ticker'];
}
return $tickers;
另外,您的命令$ticker['ticker']没有意义,因为它只存储1个变量。我已将其更改为$tickers[]=$results['ticker'],以将它们存储在数组中。这样做的结果如下所示:
array(3) {
[0]=>
string(1) "A"
[1]=>
string(2) "AA"
[2]=>
string(4) "WADV"
}
你的代码没有意义。首先,你不需要第一个foreach。你所需要的只是
$result = json_decode($json, true);
$tickers =[];
foreach ($result['tickers'] as $results)
{
$tickers[] = $results['ticker'];
}
return $tickers;
另外,您的命令$ticker['ticker']没有意义,因为它只存储1个变量。我已将其更改为$tickers[]=$results['ticker'],以将它们存储在数组中。这样做的结果如下所示:
array(3) {
[0]=>
string(1) "A"
[1]=>
string(2) "AA"
[2]=>
string(4) "WADV"
}
这是一个独特的问题吗?不要让帽子把你拖下水。@mickmackusa,IMHO不理解如何处理JSON和在哪里尝试似乎忽略了它的工作原理是有区别的。仅仅将他们指向一个通用解决方案并不总是有帮助。我是否需要发布一个冗余的
array\u column()
answer?@mickmackusa,如果您对重复的选择添加一些解释,可能会有所帮助,因为原始问题根本不包括array\u column()
。那么,一个与访问JSON有关的问题如何与PHP 7中不工作的array\u column()
相同呢?”这个问题在这里已经有了答案:“意味着对“replicate”的解释不像以前那么严格了。最终,堆栈溢出不需要我对每个雪花问题给出相同的答案。如果前面的答案包含解决方案,我将关闭以避免重复内容。我可以用几十页来结束这个问题(你知道的)。这是一个独特的问题吗?不要让帽子把你拖下水。@mickmackusa,IMHO不理解如何处理JSON和在哪里尝试似乎忽略了它的工作原理是有区别的。仅仅将他们指向一个通用解决方案并不总是有帮助。我是否需要发布一个冗余的array\u column()
answer?@mickmackusa,如果您对重复的选择添加一些解释,可能会有所帮助,因为原始问题根本不包括array\u column()
。那么,一个与访问JSON有关的问题如何与PHP 7中不工作的array\u column()
相同呢?”这个问题在这里已经有了答案:“意味着对“replicate”的解释不像以前那么严格了。最终,堆栈溢出不需要我对每个雪花问题给出相同的答案。如果前面的答案包含解决方案,我将关闭以避免重复内容。我本可以用几十页(你知道这一点)来结束这一页。returnarray\u列(json\u decode($response,true)['tickers','ticker')代码>如第一次重复所示。一行,全部完成。返回数组_列(json_decode($response,true)['tickers','ticker')代码>如第一次重复所示。一行,全部完成。