如何从多维定价表数组中动态获取对应价格值?
问题:根据损伤区域、凹痕尺寸和数量动态获取对应定价
结构说明
$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; } ?>
代码说明
- 先校验
$pricing_table、$dent_size、$number_dents的有效性,避免空数组或非数组导致的报错 - 用
$damage_area_index替代原有的$damage_area_no,更直观对应索引位置 - 使用
??空合并运算符做容错,避免键不存在时抛出PHP警告 - 严格按照
损伤区域名称 -> 用户选择的尺寸 -> 用户选择的数量区间的层级从$pricing_table中取值
内容的提问来源于stack exchange,提问作者EonYY
相关产品推荐
相关产品推荐

