PHP中如何将变量的结果作为另一个变量的名称?
解决PHP变量变量的使用问题
我懂你的需求——就是想把$field['name'](如果不存在就用$field['id'])的结果,作为新变量的名称,对吧?变量变量其实完全能实现这个需求,大概率是你之前的写法没到位,我给你一步步讲清楚:
第一步:先获取目标变量名
先把你要用来当变量名的字符串存好,这样后续代码更清晰:
// 先拿到最终要作为变量名的字符串 $target_var_name = isset($field['name']) ? $field['name'] : $field['id'];
第二步:创建变量变量
有两种常用写法,都能达到目的:
- 双美元符号写法:
// 现在$$target_var_name就等价于$[target_var_name的值],比如如果target_var_name是'value_name',那就是$value_name $$target_var_name = "你要赋给这个变量的内容";
- 花括号包裹写法(可读性更强,尤其适合复杂表达式):
// 和上面效果完全一样,只是写法更明确 ${$target_var_name} = "你要赋给这个变量的内容";
如果不想用临时变量,也可以直接把表达式塞进花括号里一步到位:
${ isset($field['name']) ? $field['name'] : $field['id'] } = "你的变量值";
注意事项
- 要确保
$field['name']或$field['id']的结果符合PHP变量命名规则:必须以字母或下划线开头,只能包含字母、数字、下划线。如果结果是数字开头或者有特殊字符,会直接报错。 - 如果是在函数内部创建变量,默认是局部变量;如果要创建全局变量,可以用
$GLOBALS数组:
$target_var_name = isset($field['name']) ? $field['name'] : $field['id']; $GLOBALS[$target_var_name] = "全局范围内可用的变量值";
内容的提问来源于stack exchange,提问作者Mitos
相关产品推荐
相关产品推荐

