2009-03-27

[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 回應: