PHP计算WordPress Gravity Forms短码输出数值求和异常求助
解决方案:处理带千分位的数字字符串相加问题
这个问题我遇到过!核心原因是do_shortcode返回的是带千分位逗号的字符串,PHP在直接做加法时会自动把这类字符串转换为整数,只保留逗号前面的部分——所以10,969.39被转成了10,4,582.92变成了4,加起来自然是14。
下面给你两种可行的解决办法:
方法一:手动处理字符串,转换为浮点数计算
先去掉字符串中的千分位逗号,再转换为浮点数进行运算,最后按需格式化输出结果:
<?php // 获取带千分位的字符串结果 $first_number_str = do_shortcode("[gravitywp_count formid='1' number_field='3']"); $second_number_str = do_shortcode("[gravitywp_count formid='2' number_field='3']"); // 移除逗号并转换为浮点数 $first_number = floatval(str_replace(',', '', $first_number_str)); $second_number = floatval(str_replace(',', '', $second_number_str)); // 计算总和 $sum_total = $first_number + $second_number; // 格式化输出为带千分位、保留两位小数的格式 $direct_text = 'The two variables added together = '; print ($direct_text . number_format($sum_total, 2, '.', ',')); ?>
方法二:利用插件参数直接获取纯数字(推荐)
很多计数类插件会提供参数让你返回未格式化的纯数字,比如gravitywp-count可能支持format='raw'这类参数(具体可以看插件的短码文档)。如果支持的话,代码会更简洁:
<?php // 直接获取纯数字字符串并转换为浮点数 $first_number = floatval(do_shortcode("[gravitywp_count formid='1' number_field='3' format='raw']")); $second_number = floatval(do_shortcode("[gravitywp_count formid='2' number_field='3' format='raw']")); // 计算总和并格式化输出 $sum_total = $first_number + $second_number; $direct_text = 'The two variables added together = '; print ($direct_text . number_format($sum_total, 2, '.', ',')); ?>
两种方法最终都会输出你预期的15,552.31,方法二更高效,建议先确认插件是否支持这类参数;如果不支持,方法一完全可以解决问题。
内容的提问来源于stack exchange,提问作者jfar_2020
相关产品推荐
相关产品推荐

