如何在PHP中定义包含变量值的动态变量名?
解决PHP变量名动态拼接的问题
嘿,这个需求完全可行的!你遇到的问题是PHP解析变量名时的优先级问题——直接写$ext_$type_up_let的话,PHP会把$type_up_let当成一个完整的变量名来解析,而不是把$type_up的值插入到中间。
这里有两种常用的正确写法:
方法一:用花括号明确包裹变量部分
把你要插入的变量用花括号包起来,告诉PHP这是一个独立的变量,这样就能正确拼接变量名了:
$type_up = "pics"; $ext_pics_let = "jpg"; // 假设这个变量已经定义 // 正确获取$ext_pics_let的值 $value = ${"ext_{$type_up}_let"}; echo $value; // 输出 "jpg"
方法二:先拼接变量名字符串,再用变量变量
先把目标变量名拼成一个字符串,再通过变量变量的方式访问:
$type_up = "pics"; $ext_pics_let = "png"; // 先拼接变量名字符串 $targetVar = "ext_{$type_up}_let"; // 用$$访问变量变量 $value = $$targetVar; echo $value; // 输出 "png"
小建议
虽然变量变量能解决问题,但如果你的项目里有很多类似的动态变量场景,更推荐用数组来替代,代码可读性和维护性会更好:
// 用数组存储相关值,结构更清晰 $ext = [ 'pics' => [ 'let' => 'jpg' ] ]; $type_up = "pics"; $value = $ext[$type_up]['let']; echo $value; // 输出 "jpg"
内容的提问来源于stack exchange,提问作者Juan Carlos Mariño Fernández
相关产品推荐
相关产品推荐

