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

如何从多维定价表数组中动态获取对应价格值?

问题:根据损伤区域、凹痕尺寸和数量动态获取对应定价

结构说明

$pricing_table是一个三维关联数组,层级结构为:

  • 第一级键:损伤区域名称(如Hood)
  • 第二级键:凹痕尺寸名称(如Nickel)
  • 第三级键:凹痕数量区间(如6-15)
  • 最终值:对应组合的定价(如$225)

原代码问题

现有代码未正确匹配三维数组的层级关系,直接调用$number_dents[$i]无法从$pricing_table中定位到对应价格,需要调整遍历逻辑,通过用户选择的参数逐层匹配数组键。

修改后的代码

<?php 
$dent_size = get_post_meta(get_the_ID(), 'dent_size', true);
$number_dents = get_post_meta(get_the_ID(), 'number_dents', true);
$pricing_table = get_option( 'hailbids_pricing_table' );

// 确保定价表和用户选择的参数有效
if (!empty($pricing_table) && is_array($dent_size) && is_array($number_dents)) {
    $damage_area_index = 0;
    foreach ( $pricing_table as $damage_area_title => $damage_area_data ) :
        // 获取当前损伤区域对应的用户选择值
        $selected_size = $dent_size[$damage_area_index] ?? '';
        $selected_count = $number_dents[$damage_area_index] ?? '';

        if(!empty($selected_size) && !empty($selected_count)) {              
            // 逐层匹配数组键,获取对应价格,做容错处理避免报错
            $price = $pricing_table[$damage_area_title][$selected_size][$selected_count] ?? 0;
            echo $price;
        } else {
            echo 0;
        }
        $damage_area_index++;
    endforeach;
} else {
    // 参数无效时输出默认值
    echo 0;
}
?>

代码说明

  1. 先校验$pricing_table、$dent_size、$number_dents的有效性,避免空数组或非数组导致的报错
  2. 用$damage_area_index替代原有的$damage_area_no,更直观对应索引位置
  3. 使用??空合并运算符做容错,避免键不存在时抛出PHP警告
  4. 严格按照损伤区域名称 -> 用户选择的尺寸 -> 用户选择的数量区间的层级从$pricing_table中取值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:25:40