首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将字符串引用转换为变量

如何将字符串引用转换为变量
EN

Stack Overflow用户
提问于 2012-07-18 21:03:20
回答 3查看 82关注 0票数 1

我希望$masking_x充当$masking_y (即动态插入$radiovalue,但仍然充当varibale)。

我的代码是

代码语言:javascript
复制
while($field_radio = mysql_fetch_assoc($result_radio)) {
    $radiovalue = $field_radio[radiovalue];
    echo "Radio value: ".$radiovalue."</br>";   
    $masking = "field_masking[checkbox_1001_".$radiovalue."]";
    $masking_x = '$'.$masking;
    $masking_y = "$field_masking[checkbox_1001_2]";
    echo "Masking: ".$masking."</br>";
    echo "Masking_x: ".$masking_x."</br>";
    echo "Masking_y: ".$masking_y."</br>";
    die;

我得到了以下输出:

代码语言:javascript
复制
Radio value: 2
Masking: field_masking[checkbox_1001_2]
Masking_x: $field_masking[checkbox_1001_2]
Masking_y: 2

任何指导都将不胜感激。提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-18 21:27:05

如果你想动态访问一个数组变量,把它分成两部分,单个变量是不起作用的。

代码语言:javascript
复制
$name = 'field_masking';
$key = 'checkbox_1001_'.$radiovalue;

echo $$name[$key];
票数 1
EN

Stack Overflow用户

发布于 2012-07-18 21:09:35

您对variable variables的使用稍有错误。试着这样做:

代码语言:javascript
复制
$radiovalue = $field_radio['radiovalue'];
echo "Radio value: ".$radiovalue."</br>";   
$masking_x = "field_masking['checkbox_1001_".$radiovalue."']";
$masking_y = "field_masking['checkbox_1001_2']";
echo "Masking_x: ".$$masking_x."</br>";
echo "Masking_y: ".$$masking_y."</br>";

双美元符号必须在代码中,而不是在字符串中。

也可以这样做:

代码语言:javascript
复制
$radiovalue = $field_radio['radiovalue'];
echo "Radio value: ".$radiovalue."</br>";   
echo "Masking_x: ".${"field_masking['checkbox_1001_".$radiovalue."']"}."</br>";
echo "Masking_y: ".${"field_masking['checkbox_1001_2']"}."</br>";

另请注意,我在字符串中添加了单引号,以正确地引用数组键、关联数组键所使用的字符串,这些是常规字符串,应该这样引用。

然而,,重要的是要注意,变量很少是给定问题的正确解决方案。使用arraysreferences通常可以想出更好的解决方案。

编辑

在使用它之后,当键定义在字符串中时,似乎不能使用变量变量来引用数组键。这是一件非常可怕的事情,我从来没有遇到过这样的限制,我一点也不奇怪。

简而言之,你不能准确地做你想要做的事情,对你来说最好的解决方案可能是使用引用:

代码语言:javascript
复制
$radiovalue = $field_radio['radiovalue'];
echo "Radio value: ".$radiovalue."</br>";   
$masking = &$field_masking['checkbox_1001_'.$radiovalue];
echo "Masking: ".$masking."</br>";
$masking = "A different value";
echo "Masking: ".$masking."</br>";
// Original value has been updated as well
echo "\$field_masking['checkbox_1001_'.\$radiovalue]: ".$field_masking['checkbox_1001_'.$radiovalue]."</br>";
票数 2
EN

Stack Overflow用户

发布于 2012-07-18 21:11:51

看看variable variables吧。请注意,如果您正在处理用户输入,这将是一个潜在的安全风险。

在您的例子中:$masking_x = $$masking;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11542056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档