PHP - 可选的多维键(不同的 API 对象)

PHP - Optional multidimensional keys (differing API objects)

我正在尝试创建一个可以动态处理来自不同来源的多个不同 API 请求的函数。一些 API 对象将以不同的方式 return 数据,但我希望能够使用我的 $fees 数组访问 API 对象中的数据。

这是我的用例:

$fees => Array
(
     [0] => data
     [1] => transaction_config
     [2] => total_fee_amount
)

我想使用这个数组,这样我就可以像这样访问 API 对象中的数据:

$apiObject['data']['transaction_config']['total_fee_amount'];

一些 API 对象可能只嵌套两层,例如,

$fees => Array
(
     [0] => data
     [1] => fee_total
)

$apiObject['data']['fee_total'];

而且我希望能够根据费用数组的内容动态处理这个问题。

编辑:为了更好地说明,这是我尝试过但不起作用的方法

$feeKeys = '';
foreach ($fees as $feeKey) {
    $feeKeys .= "['" . $feeKey . "']";
}
$test = $apiObject . $feeKeys;

这只是 returns Array['data']['transaction_config']['total_fee_amount']

而不是值

不知道我对你的理解是否正确,但你可能会发现这个功能有用:

function flatCall($data_arr, $data_arr_call){
    $current = $data_arr;
    foreach($data_arr_call as $key){
        $current = $current[$key];
    }

    return $current;

整个代码可能如下所示:

<?php

$fees = [
    0 => 'data',
    1 => 'transaction_config',
    2 => 'total_fee_amount',
];

$apiObject = [
    'data' => [
        'transaction_config' => [
            'total_fee_amount' => 5
        ]
    ]
];

function flatCall($data_arr, $data_arr_call){
    $current = $data_arr;
    foreach($data_arr_call as $key){
        $current = $current[$key];
    }

    return $current;
}

$keys = array_values($fees);

$result = flatCall($apiObject, $keys);

变量保存在$result中。

是您要查找的内容吗?