任何人都可以告诉我为什么这样有效(它回应“poo”):
$input = "wee";
$val = "poo";
${$input} = $val;
echo $wee;
但这不是:
function bodily($input) {
$val = "poo";
${$input} = $val;
}
bodily("wee");
echo $wee;
我想使用这种方法来玩一些$ _POST变量。请告诉我是否可以解释更多...干杯!
答案 0 :(得分:4)
您的变量$wee
仅在函数bodily()
的范围内定义。它没有在此功能之外定义。
您可以使其成为global
,无论如何这对于现实生活应用来说不是一个有用的模式:
function bodily($input) {
$val = "poo";
global ${$input}; // make your $wee defined in the global scope
${$input} = $val;
}
bodily("wee");
echo $wee;
输出
poo
答案 1 :(得分:3)
因为变量是在函数内部定义的。让函数返回值并将其赋值给函数外的变量。
答案 2 :(得分:1)
因为函数内部的变量不能从外部访问,除非在函数内使用“global $ var”或通过引用传递它,如function(& $ var)... 为了使您的代码能够工作,您需要
<?php
function bodily($input) {
$val = "poo";
${$input} = $val;
echo $wee;
}
bodily("wee");