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

Naofumi Kondoh php-users@php.gr.jp
Tue, 12 Jun 2001 20:03:00 +0900


ソフト工房の近藤です。

kenkubo@n-verde.co.jp wrote:

> つまり、私のやりたかった事は以下の様なフォームからtest.phpへ
> 数個のパラメーターを送る事で、添字が 0 から 32bitMAXを超える
> 値までの大量の配列を送信する訳ではありませんでした。
> -------------------------------------------------------
> <form action="test.php" method="post">
> <input type="text" name="hoge[98765432100]" value="10">
> <input type="text" name="hoge[98765432101]" value="20">
> <input type="text" name="hoge[98765432105]" value="30">
> <input type="submit" name="" value="send">
> </form>

それならば、次のような例で如何でしょう。

添字は文字列になりますが、連想配列として
認識され、foreach がつかえます。

実行環境   PHP Version 4.0.4pl1

<script language=PHP>
if (isset($hoge) && is_array($hoge)){
    foreach($hoge as $k => $v){
        echo "hoge [ $k ] is $v 。添字の型= ".gettype($k)."<br>"; 
    }
}
// 注:action では、自分自身を呼出しています。
echo "<form action='./test_input.php' method=post>";
echo "<input type=submit><br>";
$r = (double)111222333444555.0;
for($i=1; $i<=9; ++$i){
    $t = sprintf("<input type=text 
            name=\"hoge[%15.0lf]\"
            value=\"%d\">", floor($r), $i*10);
    echo $t;
    echo htmlspecialchars($t);
    echo "<br>";
    $r = $r + 1.0;
}
echo "</form>";
</script>

........... SUBMIT 実行結果(抜粋).........
hoge [ 111222333444555 ] is 10 。添字の型= string
hoge [ 111222333444556 ] is 20 。添字の型= string
hoge [ 111222333444557 ] is 30 。添字の型= string
(snip)

 <input type=text name='hoge["111222333444555"]' value="10">
 <input type=text name='hoge["111222333444556"]' value="20">
 <input type=text name='hoge["111222333444557"]' value="30">
(snip)

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文   Email:  nkon@shonan.ne.jp 
      JPUG 業務アプリ開発支援分科会 提案書
      http://www.shonan.ne.jp/~nkon/jpug.ap.html
          http://www.SOFTKOUBOU.co.jp/
 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/