【问题标题】:Why am I unable to extract values from multi dimentional arry [closed]为什么我无法从多维数组中提取值 [关闭]
【发布时间】:2021-06-09 20:05:20
【问题描述】:

我正在使用 curl 获取一些外部数据。

$response = curl_exec($ch);
var_export($response) 
//I get the output as below:

'{ "value" : { "id" : 1090xxxx, "version" : 0, "url" : 
"tripletex.no/v2/token/session/1090xxxx", "consumerToken" : { "id" : 38xx, "url" : 
 "tripletex.no/v2/token/consumer/38xx" }, "employeeToken" : { "id" : 139xxx, "url" : 
 "tripletex.no/v2/token/employee/139xxx" }, "expirationDate" : "2022-01-01", "token" : 
 "a0a48845-2d7b-4375-aeb8-e1dcxxxxxx", "encryptionKey" : null } }'

//I then put the response into an array like this:
 $data=json_decode($response ,true);

print_r($data) //creates this output:
Array ( [value] => Array ( [id] => 10909xxxx [version] => 0 [url] => 
tripletex.no/v2/token/session/10909xxxx [consumerToken] => Array ( [id] => 38xx [url] => 
tripletex.no/v2/token/consumer/38xx ) [employeeToken] => Array ( [id] => 139xxx [url] => 
tripletex.no/v2/token/employee/139xxx ) [expirationDate] => 2022-01-01 [token] => a0a48845- 
2d7b-4375-aeb8-xxxxxxxx [encryptionKey] => ) )

echo ($data['value']['employeeToken']['token']);

我试图实现的是提取 [token] 的价值。 我已经测试了各种方法来完成这项工作,但没有运气。 如果有人能用一段代码指出我正确的方向,可以从 json 响应或我们的数组中提取数据?

【问题讨论】:

  • $data['value']['token'] 是它所在的位置
  • 如果您在理解某些 JSON 的结构时遇到问题,JSON 格式化程序可能会有所帮助,例如 jsonformatter.curiousconcept.com(或者只是搜索,有很多)。

标签: php multidimensional-array


【解决方案1】:

首先,您错误地访问了数组——您将进入[employeeToken],它只有[id][url] 的两个孩子。您需要$data['value']['token'] 才能访问您要查找的字段。

建议:您正在尝试访问一个数组(通过设置json_decode -> true).. 而您应该尝试以Object 的身份访问它.. 这有效“作为是“独立的..经过测试..

<?php

$response = '{ "value" : { "id" : "1090xxxx", "version" : 0, "url" : 
"tripletex.no/v2/token/session/1090xxxx", "consumerToken" : { "id" : "38xx", "url" : 
 "tripletex.no/v2/token/consumer/38xx" }, "employeeToken" : { "id" : "139xxx", "url" : 
 "tripletex.no/v2/token/employee/139xxx" }, "expirationDate" : "2022-01-01", "token" : 
 "a0a48845-2d7b-4375-aeb8-e1dcxxxxxx", "encryptionKey" : null } }';

// YOUR WAY
$data = json_decode($response, true);
echo $data['value']['token'] . "\n\n";

// MY SUGGESTION
$data = json_decode($response);
echo $data->value->token . "\n\n";

【讨论】:

  • 感谢您为我指明了正确的方向。您的建议就像我们希望的那样有效。
猜你喜欢
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
  • 2020-01-29
相关资源
最近更新 更多