0

我对 php 以及如何使用多维数组的理解是有限的,所以我很难理解如何访问 name="value"。

<input name='questions[]' type='text' value='question 1' /><br/>
  <input name='choice[1-1][]' type='text' value='option 1' />   
    <input name='value[1-1][1][]' type='text' value='value' /><br/>
  <input name='choice[1-1][]' type='text' value='option 2' />   
    <input name='value[1-1][2][]' type='text' value='value' /><br/>
  <input name='choice[1-1][]' type='text' value='option 3' />   
    <input name='value[1-1][3][]' type='text' value='value' /><br/>

我使用了一个 foreach 循环并访问了它,但我想访问值数组中的单个元素。所以我相信使用另一种方法会更好。

我通过以下方式访问了问题[]:

$q = $_POST['questions'];
echo $q[0];

但我尝试以类似的方式访问choice[] 和value[],但没有成功。

首先,我尝试使用 print_r() 来查看数组是如何设置的,我看到我需要额外的 [] 来选择和两个额外的值,但是我添加了它们并得到了错误消息,未定义的偏移量:0,这来自我的研究found 表示未设置数组,我显然访问不正确,请有人指教。

也可以找到关于多维数组的好教程的建议,我已经看过 php.net。

4

3 回答 3

0

基本上,这就是 PHP 在提交此表单时填充数组的方式(*$_GET/$_POST -- 取决于表单方法*)。方括号内的任何内容都是文字(除了一些字符,如下划线,它们被转换为破折号)。空括号意味着 PHP 将自动将每个值附加到该数组(从 0 索引开始),就像您array_push在 PHP 中使用的一样。

所以你的数组会喜欢这个......

$_POST['value']['1-1'][1][0] = 'whatever value the user supplied 1';
$_POST['value']['1-1'][2][0] = 'whatever value the user supplied 2';
$_POST['value']['1-1'][3][0] = 'whatever value the user supplied 3';

要访问 PHP 中的任何这些元素,您将使用相同的符号。如果您想遍历它们,则必须考虑它们是三维的。所以例如...

foreach ($_POST['value']['1-1'] as $values) {
    foreach ($values as $value) {
        echo "$value\n";
    }
}

这将输出

whatever value the user supplied 1
whatever value the user supplied 2
whatever value the user supplied 3

另外,我忘了提到你可以使用类似 var_dump($_POST, $_GET); 查看一个可打印的数组结构。我强烈推荐使用var_dump来调试变量,因为它为您提供了很多关于这些变量的有用信息,这些信息超出了任何其他函数,如 print_r/echo/etc...

于 2012-12-10T21:18:47.940 回答
0

与其告诉你确切的答案,不如让我用提示引导你,这样你就可以自己学习并从中获得乐趣。

利用:

    print_r($_POST);

结果,您将能够决定如何调用每个元素。如果您仍然有问题,请在下面评论。

于 2012-12-10T21:13:49.477 回答
0

我认为这会比你当前的结构更容易通过 php 处理

<input name='questions[q1]' type='text' value='question 1' /><br/>
<input name='questions[choice][1]' type='text' value='option 1' />   
<input name='questions[value][1]' type='text' value='value' /><br/>
<input name='questions[choice][2]' type='text' value='option 1' />   
<input name='questions[value][2]' type='text' value='value' /><br/>  
<input name='questions[choice][3]' type='text' value='option 1' />   
<input name='questions[value][3]' type='text' value='value' /><br/>

根据您的具体情况,我可以看到一些变化。

于 2012-12-10T21:14:01.040 回答