簡體   English   中英

訪問3D數組

[英]accessing a 3d 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循環並訪問了它,但我想訪問值數組中的單個元素。 所以我相信使用替代方法會更好。

我通過以下方式訪問了問題[]:

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

但是我嘗試以類似的方式訪問choice []和value [],但是沒有成功。

首先,我嘗試使用print_r()來了解如何設置數組,我看到我需要額外的[]作為選擇,另外兩個值作為附加值,但是我添加了它們並得到了錯誤消息,未定義的偏移量:0,這是我研究得到的發現意味着未設置數組,我顯然是錯誤地訪問了它,請有人指教。

如果已經看過php.net,也可以找到有關多維數組的良好教程的建議。

除了告訴您確切的答案外,我還指導您提示,以便您自己學習並獲得樂趣。

采用:

    print_r($_POST);

結果,您將能夠決定如何調用每個元素。 如果仍有問題,請在下面評論。

我認為通過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/>

根據您的特定情況,我可以看到一些變化。

基本上,這就是提交表單時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之類的任何其他函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM