我想基于变量值创建动态名称。我使用一个变量$count
,它最初保持0并递增,给每个输入类型一个不同的值。
可悲的是,在我提交表单后,我尝试访问那些不存在的变量。 变量应为$ 0,$ 1,$ 2等,具体取决于输入类型的数量。 在访问它们之前,我已经解压缩了POST数组。
while ($nrpyetjeve >0)
{
$raport="SELECT * FROM $emrikategorise WHERE Id=$nrpyetjarandom";
$result1=mysql_query($raport);
$rrjeshti=mysql_fetch_assoc($result1);
echo "<h3>- {$rrjeshti['Pyetja']}</h3><br/><br/>";
echo "<ul><li>{$rrjeshti['Pgj1']}</li>";
echo "<li>{$rrjeshti['Pgj2']}</li>";
echo "<li>{$rrjeshti['Pgj3']}</li>";
echo "<li>{$rrjeshti['Pgj4']}</li></ul>";
echo "<br/><br/>";
这是问题
echo "<input type=\"text\" size=\"15\" name='$count'/>";
echo "<br/><br/>";
array_push($zgjidhjet,$rrjeshti['Pgjsakt']);
$nrpyetjeve=$nrpyetjeve-1;
$nrpyetjarandom=rand(1,$nrrjeshta);
$count=$count+1;
}
答案 0 :(得分:2)
&#34;注册全局&#34;仅在$_POST
等的数组键时才有效。是有效的变量名。
例如,如果您有<input name="foo-bar" />
,则不能指望$foo-bar
作为变量出现。相反,请使用$_POST['foo-bar']
。
在您的情况下,它会是$_POST['0']
,$_POST['1']
等等。
一般来说,依靠&#34;注册全局数据&#34;是一个坏的想法。
答案 1 :(得分:1)
如果您使用register_globals
或尝试extract()
这些变量,则它们无效,因为PHP变量不能以数字(或数字)开头。您需要访问$_POST
超全局。更好的方法是使用数组:
echo "<input type=\"text\" size=\"15\" name='text[$count]'/>";
然后以$_POST['text'][0]
等方式进行访问。现在,您的所有文字输入都会在$_POST['text']
下分组,您也可以将复选框等分组。然后你可以extract()
这些(不推荐)。