[PHP-users 21] Re: (再送配列を POST等で渡す時の引数について

Naofumi Kondoh php-users@php.gr.jp
Tue, 12 Jun 2001 16:25:40 +0900


ソフト工房の近藤です。

Tetsuya Matsuzaki wrote:
> 
> こんにちわ、まつざきです。
> 
> >
> > PHPで配列を渡す時、フォームで
> > <input type="text" name="hoge[0]" value="10">
> > <input type="text" name="hoge[1]" value="20">
> > <input type="text" name="hoge[2]" value="30">
> > この様にして使っていますが、hogeの引数が整数として
> > 32bitを超えてしまうと桁あふれして、PHPで受け取ったとき
> > 全く違った値になってしまいます。
> >
> 32bit を超える数の配列を渡したいということでしょうか?
> 
> 可変変数を使えば可能かも知れません。
> 例えば
> <input type="text" name="hoge0" value="10">
> <input type="text" name="hoge1" value="20">
> <input type="text" name="hoge2" value="30">
> 
> しかし、HTML に埋め込む方法はお勧めできません。
> ネットワークかかる負荷もバカになりませんので。
> データベースや一時ファイルを使うように設計しなおしたほうが良いかと思いま
> す。

同意見です。

質問の意味がちょっと不明なのですが、0 から、
32bit で表現できる添字であらわせる POST 変数
などといったら、軽く GB の単位を超えてしまい
ますので、とてもネットワークで送れるような量
ではありません。ファイルやDBにさえ入るか問題
になるところです。

あるいは、10 桁以上の数字の文字列を含む変数名
を使いたいということであれば、可変変数でも、
なんでも使って HTML の仕様の許す範囲で名前を
つければいいだけです。


誤解しがちなので付加えますが、
     NAME='hoge[2]'  
などを配列として処理するのは、PHP の仕様であ
って、HTML の仕様ではありません。HTML では、
'hoge[2]' という記号を含む文字列として扱って
いるだけです。HTML レベルでは、
      NAME='hoge[2]' も NAME='hoge_2' も
同じ扱です。

例えば、JavaScript で、上記の NAME 要素の値
を取出す場合は、次のように書きます。
(最初の FORM の場合)。

document.forms[0].elements['hoge[2]'].value

このあたりの説明で、解決の糸口とならないでしょうか。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文   Email:  nkon@shonan.ne.jp 
          http://www.SOFTKOUBOU.co.jp/
 〒251-0052 神奈川県藤沢市藤沢  3-3-22   TEL: 0466-24-3688
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/