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
// )