[PHP-users 24637] <select> による複数値の POST 時の不可解な現象

T.Masuda tmasuda @ msg.biglobe.ne.jp
2005年 2月 22日 (火) 04:11:38 JST


マスダです。
いつも質問ばかりで申し訳ありません。


test1.php → test2.php へ値を post する PHP を作成します。

test1.php からは、複数値選択可能な <select> により、0〜10000000 までの
値を test2.php に post します。
post するフィールドの名前は items[] としてあります。

-- test1.php ------------------------------------------
<html>
<body>
 <form action="test2.php" method="post">
  <select name="items[]" multiple>
   <option value="1">1
   <option value="10">10
   <option value="100">100
   <option value="1000">1000
   <option value="10000">10000
   <option value="100000">100000
   <option value="1000000">1000000
   <option value="10000000">10000000
   <option value="100000000">100000000
  </select>
  <input type="submit">
 <form>
</body>
</html>

-- test2.php ------------------------------------------
<?php
 $items = $_POST['items'];

 foreach ($items as $key => $value) {
  print("$key = $value <br>");
 }
?>
-------------------------------------------------------


test2.php では、$_POST['items'] でデータを受け取り、
配列の値を name=value の形式で出力します。
 
リストを全て選択して Submit した場合、
当然、以下の様な表示結果が期待されるところですが...
-------------------------------------------------------
0 = 1 
1 = 10 
2 = 100 
3 = 1000
4 = 10000 
5 = 100000 
6 = 1000000 
7 = 10000000 
8 = 100000000 
-------------------------------------------------------

実際は、以下の様になってしまいます。
-------------------------------------------------------
0 = 1 
1 = 10 
2 = 100 
3 = 
4 = 0 
5 = 00 
6 = 000 
7 = 0000 
8 = 00000 
-------------------------------------------------------

この現象の理由が全く解りません。
1000 が出力されない時点では、複数値の値に「3桁制限」があるのかと思ったのですが、
桁を増やしてゆくと、どうもそうではないようです。
HTTP のキャプチャを見ると、post データは正常にサーバに送られています。


思い当たる原因等ありましたら、ご教授願います。

宜しくお願いいたします。



PHP-users メーリングリストの案内