You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何通过自定义键数组动态获取不同API返回的多维数组值

动态嵌套取值实现方案

问题原因

你之前的写法错误原因是:PHP不会将拼接得到的['key']格式字符串自动识别为数组访问语法,当你将数组类型的$apiObject和字符串拼接时,PHP会自动将数组转为字符串Array,最终得到的只是拼接后的普通字符串,不会执行实际的取值逻辑。

最优实现方案

通过循环逐层嵌套取值,兼容任意层级的键配置,同时可添加异常判断避免键不存在时报错:

/**
 * 从多层嵌套的数组/对象中动态取值
 * @param array|object $data 接口返回的原始数据
 * @param array $keys 自定义的键路径数组(即你定义的$fees数组)
 * @param mixed $default 键不存在时返回的默认值
 * @return mixed
 */
function getNestedValue($data, array $keys, $default = null)
{
    $current = $data;
    foreach ($keys as $key) {
        // 兼容数组格式返回
        if (is_array($current) && isset($current[$key])) {
            $current = $current[$key];
        }
        // 兼容对象格式返回
        elseif (is_object($current) && property_exists($current, $key)) {
            $current = $current->$key;
        }
        // 键不存在返回默认值
        else {
            return $default;
        }
    }
    return $current;
}

使用示例

// 3层嵌套取值
$fees = ['data', 'transaction_config', 'total_fee_amount'];
$totalFee = getNestedValue($apiObject, $fees);

// 2层嵌套取值
$fees = ['data', 'fee_total'];
$totalFee = getNestedValue($apiObject, $fees);

上述实现支持任意层数的键配置,同时避免了eval等不安全写法的风险。


内容的提问来源于stack exchange,提问作者Jack Perry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:57:01