PHP如何根据已有变量的值动态构造对应变量名并取值以精简代码?
PHP动态获取对应变量值实现方案
PHP完全支持你提到的动态拼接变量名取值的逻辑,该特性在PHP中被称为可变变量,一行代码即可实现需求:
直接实现(符合你要求的动态变量名写法)
核心语法:
$newvar = ${'type_' . $type};
当$type的值为cd时,上述代码等价于直接读取$type_cd的值,运行示例如下:
// 你的原有变量定义 $type = 'cd'; $type_cd = 'Compact Disc'; // 动态取值 $newvar = ${'type_' . $type}; echo $newvar; // 输出结果:Compact Disc
如果需要兼容不存在对应变量的场景,避免报错,可以加一层简单的兜底判断,一行即可完成:
$newvar = isset(${'type_' . $type}) ? ${'type_' . $type} : $type;
更推荐的实现方案(易维护拓展)
相比可变变量,更建议用数组存储类型映射关系,后续新增类型无需额外声明变量,维护成本更低:
// 统一维护所有类型的映射关系 $typeLabels = [ 'cd' => 'Compact Disc', 'dvd' => 'Digital Video Disc', 'bd' => 'Blu-ray Disc' ]; // 取值,不存在对应映射时默认返回原$type值 $type = 'cd'; $newvar = $typeLabels[$type] ?? $type;
内容的提问来源于stack exchange,提问作者Pimpfru
相关产品推荐
相关产品推荐

