如何在字符串中的内容后命名数组

时间:2017-06-30 09:54:46

标签: php html arrays string

我有一个表单标签,它将数组的名称发送给一个函数,但是如何在此之后命名我的数组呢?好吧,代码说的超过千言万语:

<?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需要和数组,有时不是

有什么想法吗?

1 个答案:

答案 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;
}