PHP中如何通过拼接字符串调用已存在的对应变量?
问题解决方法
错误原因
你当前的代码传入buildOutput的是拼接后的字符串字面量(比如'$dataA'),并不是对应变量的实际值,所以函数输出的是字符串而不是变量值。另外你示例代码中定义results数组时漏写了变量前缀$,会触发语法错误,需要修正为$results = array('A','B','C');。
方案1:使用PHP可变变量实现
PHP支持可变变量语法,即可以用一个变量的值作为另一个变量的名称,写法为$$变量名,修正后的代码如下:
foreach($results as $value) { // 直接用花括号声明动态变量名,不需要临时变量 buildOutput(${'data'.$value}, ${'target'.$value}); }
运行后第一次遍历就会正确传入$dataA和$targetA的实际值1和2,函数输出结果符合预期。
方案2(更推荐):重构为关联数组存储同规则变量
零散定义大量同规则变量维护成本高,也容易触发变量污染问题,推荐将同规则变量合并为关联数组存储,代码可读性和安全性都更高:
// 合并零散变量为关联数组 $data = [ 'A' => 1, 'B' => 3, 'C' => 5 ]; $target = [ 'A' => 2, 'B' => 4, 'C' => 6 ]; $results = ['A','B','C']; // 遍历逻辑更简洁 foreach($results as $value) { buildOutput($data[$value], $target[$value]); }
内容的提问来源于stack exchange,提问作者user2140857
相关产品推荐
相关产品推荐

