PHP中如何拼接两个值以获取对应动态变量的取值?
实现方法
你原本的写法是拼接两个变量的值,但$p本身是未定义的变量,无法得到你要的动态取p+数字对应变量值的效果,可按以下两种方案实现:
方法1:使用可变变量(快速适配你的现有代码)
PHP支持可变变量特性,可以将字符串的内容作为变量名使用,代码修改如下:
$mark = $_SESSION["mark"]; // 此处假设该值为2 $p1 = 10; $p2 = 20; $p3 = 30; $price = ${'p' . $mark}; // 先拼接得到字符串"p2",再将其作为变量名取值,最终得到20
方法2:使用数组存储(更推荐的工程化写法)
可变变量可读性较差、容易出现未定义变量的异常,更建议你把同系列的数值存到数组中,通过下标取值,后续新增数值也只需要更新数组即可:
$mark = $_SESSION["mark"]; // 此处假设该值为2 // 数组下标对应mark的可选取值 $pList = [ 1 => 10, 2 => 20, 3 => 30 ]; // 取值前加判断避免下标不存在的报错 $price = isset($pList[$mark]) ? $pList[$mark] : 0;
注意:如果使用可变变量方案,也建议加上
isset(${'p' . $mark})的判断,避免$mark取值不在预期范围内时抛出未定义变量的警告。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

