访问3d数组

时间:2012-12-10 20:58:02

标签: php forms multidimensional-array

我对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循环并访问它有效,但我想访问value数组中的单个元素。所以我相信使用替代方法会更好。

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

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

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

首先我尝试使用print_r()来查看数组是如何设置的,我看到我需要额外的[]选择和两个额外的值,但是我添加了它们并得到了错误消息,Undefined offset:0,来自研究我发现没有设置阵列,我显然是错误地访问它,有人可以建议。

对于多维数组的优秀教程的建议也很有用,我已经看过了php.net。

3 个答案:

答案 0 :(得分:0)

不要告诉你确切的答案,而是让我引导你提示,这样你就可以自己学习并获得乐趣。

使用:

    print_r($_POST);

结果你将能够决定如何调用每个元素。如果您还有问题,请在下方发表评论。

答案 1 :(得分: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/>

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

答案 2 :(得分:0)

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

所以你的阵列会喜欢这个......

$_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 ......