PHP 读取 JSON 具有未知变量的数组
PHP read JSON Array with unknown variable
我有一个 Json 脚本,里面有一个数组和缩短的数组:
Array
(
[assets] => Array
(
[CGGD.AS] => Array
(
[shortName] => iShares Global Govt Bond Climat
[sector] =>
[industry] =>
[country] =>
[longBusinessSummary] =>
[currency] => USD
[marketCap] =>
[logo_url] =>
[Anlageklasse] => Anleihen
[Anmerkungen] => Staatsanleihen Welt
[Nachhaltigkeit] => 1
[Ist_Alternative] => 1
[weights] => 0.86563025602977
)
[SUOE.MI] => Array
(
[shortName] => ISHARES EUR CORP BOND SRI UCITS
[sector] =>
[industry] =>
[country] =>
[longBusinessSummary] =>
[currency] => EUR
[marketCap] =>
[logo_url] =>
[Anlageklasse] => Anleihen
[Anmerkungen] => Unternehmensnaleihen EUR
[Nachhaltigkeit] => 1
[Ist_Alternative] => 1
[weights] => -0.47997445382071
)
)
[risk] => 0.05323390949106
[return] => 1.1125842376311
)
现在我想使用单个变量 shortName、industry 等。
当我尝试使用
调用函数时
print_r($json_data['assets']['CGGD.AS']['shortName']);
它工作得很好。当我使用
print_r($_POST['assets'][0][0]);
它根本不工作并给我以下警告:
Warning: Undefined array key "assets" in
C:\xampp\htdocs\test\ergebnisdarstellung.php on line 52
Warning: Trying to access array offset on value of type null in
C:\xampp\htdocs\test\ergebnisdarstellung.php on line 52
我遇到的问题是我不知道第二个括号中的名称是什么,例如 CGGD.AS,因此我无法使用工作功能。我现在不会知道数组有多长,而且数字不起作用。因此,我不知道如何在不使用名称的情况下调用单个变量。
如何调用函数?
要获得所有 shortName
你可以 loop 你的数组:
foreach ($json_data['assets'] as $key => $data) {
print_r($data['shortName']);
}
如果您只需要第一个元素的 shortName
,则使用 current
:
$item = current($json_data['assets']);
print_r($item['shortName']);
$arr = [
'assets' => [
'CGGD.AS' => [
'shortName' => 'iShares Global Govt Bond Climat',
// other fields omitted
],
'SUOE.MI' => [
'shortName' => 'ISHARES EUR CORP BOND SRI UCITS',
// other fields omitted
]
],
'risk' => 0.05323390949106,
'return' => 1.1125842376311
];
$assetsKeys = array_keys($arr['assets']);
$shortNames = array_column($arr['assets'], 'shortName');
$result = array_combine($assetsKeys, $shortNames);
print_r($result);
// This will print:
// Array
// (
// [CGGD.AS] => iShares Global Govt Bond Climat
// [SUOE.MI] => ISHARES EUR CORP BOND SRI UCITS
// )
我有一个 Json 脚本,里面有一个数组和缩短的数组:
Array
(
[assets] => Array
(
[CGGD.AS] => Array
(
[shortName] => iShares Global Govt Bond Climat
[sector] =>
[industry] =>
[country] =>
[longBusinessSummary] =>
[currency] => USD
[marketCap] =>
[logo_url] =>
[Anlageklasse] => Anleihen
[Anmerkungen] => Staatsanleihen Welt
[Nachhaltigkeit] => 1
[Ist_Alternative] => 1
[weights] => 0.86563025602977
)
[SUOE.MI] => Array
(
[shortName] => ISHARES EUR CORP BOND SRI UCITS
[sector] =>
[industry] =>
[country] =>
[longBusinessSummary] =>
[currency] => EUR
[marketCap] =>
[logo_url] =>
[Anlageklasse] => Anleihen
[Anmerkungen] => Unternehmensnaleihen EUR
[Nachhaltigkeit] => 1
[Ist_Alternative] => 1
[weights] => -0.47997445382071
)
)
[risk] => 0.05323390949106
[return] => 1.1125842376311
)
现在我想使用单个变量 shortName、industry 等。 当我尝试使用
调用函数时print_r($json_data['assets']['CGGD.AS']['shortName']);
它工作得很好。当我使用
print_r($_POST['assets'][0][0]);
它根本不工作并给我以下警告:
Warning: Undefined array key "assets" in C:\xampp\htdocs\test\ergebnisdarstellung.php on line 52
Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\test\ergebnisdarstellung.php on line 52
我遇到的问题是我不知道第二个括号中的名称是什么,例如 CGGD.AS,因此我无法使用工作功能。我现在不会知道数组有多长,而且数字不起作用。因此,我不知道如何在不使用名称的情况下调用单个变量。 如何调用函数?
要获得所有 shortName
你可以 loop 你的数组:
foreach ($json_data['assets'] as $key => $data) {
print_r($data['shortName']);
}
如果您只需要第一个元素的 shortName
,则使用 current
:
$item = current($json_data['assets']);
print_r($item['shortName']);
$arr = [
'assets' => [
'CGGD.AS' => [
'shortName' => 'iShares Global Govt Bond Climat',
// other fields omitted
],
'SUOE.MI' => [
'shortName' => 'ISHARES EUR CORP BOND SRI UCITS',
// other fields omitted
]
],
'risk' => 0.05323390949106,
'return' => 1.1125842376311
];
$assetsKeys = array_keys($arr['assets']);
$shortNames = array_column($arr['assets'], 'shortName');
$result = array_combine($assetsKeys, $shortNames);
print_r($result);
// This will print:
// Array
// (
// [CGGD.AS] => iShares Global Govt Bond Climat
// [SUOE.MI] => ISHARES EUR CORP BOND SRI UCITS
// )