[PHP-users 1024] Re: フォームで多次元の配列に値を受け取るには

Shigeki Mimura php-users@php.gr.jp
Thu, 02 Aug 2001 11:50:58 +0900


三村です

shige> ためしに以下のようなコードを書いてみたのですが、うまくいきませんでした。
shige> 
shige> <form method="post" action="./test.php3">
shige> <?php print $sensor[1][1]; ?>
shige> <input type="text" name="sensor[1][1]">
shige> <input type="submit" value="送信">
shige> </form>

php-3.0.18-i18n-jaではだめで、php-4.0.6ではこれでうまくいきますね。

shige> 
shige> フォームで多次元の配列に値を受け取るにはどのようにすればよいのでしょうか?

なので、php4を使うと言うのがこれの解でしょう。

shige> また、もしそのようなことができない場合は、どのように処理するのが簡単でしょう
shige> か。もしダメならば、可変変数を利用すれば少しは楽になりそうかな、と思っていま
shige> す。

php3でと言う事であれば、可変変数を使うのは一つのアイデアだと思います。
あと、こんなのはどうでしょう?
1次元配列で、

$sensor["部屋1:センサ1"]

と言うのはいかがですかね?

$sensor["部屋1:センサ1"]="人感W";
$sensor["部屋1:センサ2"]="なし";
$sensor["部屋1:センサ3"]="なし";
$sensor["部屋1:センサ4"]="なし";

$sensor["部屋2:センサ1"]="人感W";
$sensor["部屋2:センサ2"]="なし";
$sensor["部屋2:センサ3"]="なし";
$sensor["部屋2:センサ3"]="なし";

だった場合
<?php
$param=array("人感S","人感S","なし");
print "<table>\n";
while(list($key,$val)=each($sensor)){
	$sensorname=explode(":",$key);
	print "<tr>\n";
	print "<td>".$sensorname[0]."</td>\n";
	print "<td>".$sensorname[1]."</td>\n";
	print "<td>";
	reset($param);
	while(list($key2,$val2)=each($param)){
		if($val==$val2){print "●";}else{print "○";}
		print "$val2</td>\n";
	}
	print "</tr>\n";
}
print "</table>\n";
?>

これで望み通りの結果になりますか?