2009-03-27 12:41

[PHP] 利用表單傳遞多維陣列

有時候在表單傳遞上會需要具有結構性的變數傳遞,在後端的資料處理上會比較方便,不會在變數名稱上的處理花時間,PHP 有提供可以處理多維陣列的傳遞方式,在多維陣列處理上必須要有 inedx 名稱,如果只要傳遞一維無序陣列就不用設定 inedx 名稱,只需要將 name="data[]"就可以了。 表單的命名方式:
<form action="" method="post">
<ul>
<li>
  <input type="checkbox" name="data[0][is]" value="1" />
  <input type="text" name="data[0][value]" value="1" />
  <select name="data[0][unit]">
    <option value="km">公里</option>
    <option value="m">公尺</option>
    <option value="cm">公分</option>
  </select>
</li>
<li>
  <input type="checkbox" name="data[1][is]" value="1" />
  <input type="text" name="data[1][value]" value="1" />
  <select name="data[1][unit]">
    <option value="km">公里</option>
    <option value="m">公尺</option>
    <option value="cm">公分</option>
  </select>
</li>
<li>
  <input type="checkbox" name="data[2][is]" value="1" />
  <input type="text" name="data[2][value]" value="1" />
  <select name="data[2][unit]">
    <option value="km">公里</option>
    <option value="m">公尺</option>
    <option value="cm">公分</option>
  </select>
</li>
</ul>
  <input type="submit" />
</form>
PHP 的接收格式:
<?php
print_r($_POST['data']);
/*
Array
(
  [0] => Array
  (
    [is] => 1
    [value] => 1
    [unit] => km
  )

  [1] => Array
  (
    [is] => 1
    [value] => 1
    [unit] => m
  )

  [2] => Array
  (
    [is] => 1
    [value] => 1
    [unit] => cm
  )

)
*/
?>

0 回應: