我有一个表单标签,它将数组的名称发送给一个函数,但是如何在此之后命名我的数组呢?好吧,代码说的超过千言万语:
<?php
function dynamic($id, $name, ... ){
...
echo "<select id='$id' name='$name' size='...' multiple>";
...
echo "<select id='$id' name='$name'>";
...
}
?>
<form ... method="post">
<p>
<?php
echo dynamic("dynamic1", "choice1", ...);
?>
</p>
<p>
<?php
echo dynamic("dynamic2", "choice2", ...);
?>
</p>
<p>
<?php
echo dynamic("dynamic3", "choice3", ...);
?>
</p>
<input type="submit" value="send"/>
</form>
我想创建一个列表,您可以在其中选择多个项目,但是这个$ name需要不是数组。该数组应该像第二个变量一样命名。在一种情况下,它应该在另一个选择2中命名为choice1
如何从$name = "choice1";
到choice1[]
@edit在函数中添加了一个新行以显示我的问题。 somtimes $ name需要和数组,有时不是
有什么想法吗?
答案 0 :(得分:1)
您正在寻找使用动态变量名称,这在PHP中是可行的,但您需要小心这一点。使用它的生产代码很难维护并且很容易抛出错误。
无论如何,假设您有一个$ _POST形式的值,您想将其用作变量名。你会这样做的。
$id = "gettheidsomewhere";
${$id}[] = "whatever";
就像我说的那样,请谨慎使用。动态变量名称是危险的,并且在事情中断时很难调试。
如果你不知道用于$ id的值,那么你需要循环遍历你的post变量并相应地分配它们。我想你想要添加一些额外的逻辑,但这是一个基本的例子。
使用键值循环,您可以获得post变量的名称,存储为$ key和值。所以对于$ _POST [&#34;某事&#34;] =&#34;测试&#34;,当这一行被循环时,$ key将是&#34;&#34;&#34;和$ value将是&#34; test&#34;。
foreach ($_POST as $key => $value)
{
${$key}[] = $value;
}