![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
以下のソースでブラウザ出力すると、セレクトボックスの
選択項目が、1号、10号、11号になってしまいます。
ためしに9号を99号にしてみたところ、今度は19号と出力されました。
どこが間違っているのでしょうか? ご教授頂けると幸いです。
<?php
$a_size[3][1]="9号";//size
$a_size[3][2]="10号";//size
$a_size[3][3]="11号";//size
$a_size[3][4]="12号";//size
$a_size[3][5]="13号";//size
$a_size[3][1]["amount"]=1;//amount
$a_size[3][2]["amount"]=1;//amount
$a_size[3][3]["amount"]=1;//amount
$a_size[3][4]["amount"]=0;//amount
$a_size[3][5]["amount"]=0;//amount
$ii_max=5;//ring size = 9,10,11,12,13
?>
//////////////////////////////////////////////////
【サイズ】
<select name='a_size' style="height:8; ">
<?php
if(!$a_size[$i]){
print "
<option value=''>---</option>";
}else{
print "
<option value=''>選択</option>";
for($ii=1;$ii<=$ii_max;$ii++){
if($a_size[$i][$ii]["amount"]>0){
print "
<option value='".$a_size[$i][$ii]."'>".$a_size[$i][$ii]."</option>";
}//END OF IF
}//END OF FOR
}//END OF IF ELSE
?>
</select>
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_01.png?5a7ff87)
No.4ベストアンサー
- 回答日時:
$a_size[3][n]="xx号";//size となっているのを、
$a_size[3][n]['size']="xx号";//size にしてください。
また、
print "<option value='".$a_size[$i][$ii]."'>".$a_size[$i][$ii]."</option>"; となっているのを、
print "<option value='".$a_size[$i][$ii]['size']."'>".$a_size[$i][$ii]['size']."</option>"; にしてください。
これでご期待通りの動きをすると思います。
なぜ、ご質問のプログラムでは、うまく動かないのか? については以下を見てください。
$foo = "abcdefg";
$foo[0] = 'X';
echo $foo; // Xbcdefg が出力される
$foo[2] = 'Y';
echo $foo; // XbYdefg が出力される
$foo["amount"] = 'Z';
echo $foo; // ZbYdefg が出力される
PHPは、$fooという変数に文字列が設定される場合、
$foo[0]='X' → 文字列の1番目を'X'に置き換え
$foo[2]='Y' → 文字列の3番目を'Y'に置き換え
$foo["amount"] = 'Z' → "amount"が数値に変換されて「0」となり、文字列の1番目を'Z'に置き換え
のように動作します。
従って、
$a_size[3][1]="9号";//size
$a_size[3][1]["amount"]=1;//amount
とすると、文字列"9号"の1番目の文字"9"が"1"に置き換えられて、"1号"になります。
No.2
- 回答日時:
興味深かったので自分でもいろいろ試してみました。
まずは単純な以下のソースを実行してみてください。
<?php
$a="ABC";
print $a[0];
?>
A
とだけ表示されると思います。$a[0]とすると、$aを配列とみなし、その文字それぞれが配列要素となります。したがって上の場合$a[0]は$aの先頭の文字である"A"になります。逆に、以下のように、$a[0]に値を代入すると、
<?php
$a="ABC";
$a[0] = 1;
print $a;
?>
結果は
1BC
と出ます。$a[0]に値を代入することによって、$aの文字列を部分的に書き換えてしまうようです。
これと同様に、
$a_size[3][1]="9号";//size
と定義されているところに、
$a_size[3][1]["amount"]=1;//amount
と代入すると、インデックスして文字列を使った場合、裏では0から順番に数字のインデックスが振られるので、上の式は
$a_size[3][1][0]=1;
と同じことになり、結果、$a_size[1]の最初の文字を1で上書きすることになっています。
対処法としては、amountを示す配列は$amount[3][1]などとして、変数を分ければいいのではないのでしょうか。
No.1
- 回答日時:
$a_size[3][1]="9号";
ってところを
$a_size[3][1]["size"]="9号";
として運用してみてはいかがですか?
<?php
$a_size[3][1]["size"]="9号";//size
$a_size[3][2]["size"]="10号";//size
$a_size[3][3]["size"]="11号";//size
$a_size[3][4]["size"]="12号";//size
$a_size[3][5]["size"]="13号";//size
$a_size[3][1]["amount"]=1;//amount
$a_size[3][2]["amount"]=1;//amount
$a_size[3][3]["amount"]=1;//amount
$a_size[3][4]["amount"]=0;//amount
$a_size[3][5]["amount"]=0;//amount
$ii_max=5;//ring size = 9,10,11,12,13
$i=3;
print<<<eof
【サイズ】
<select name='a_size'>
eof;
if(!$a_size[$i]) print "<option value=''>---</option>";
else{
print "<option value=''>選択</option>\n";
for($ii=1;$ii<=$ii_max;$ii++){
if($a_size[$i][$ii]["amount"]>0){
print "<option value='{$a_size[$i][$ii]["size"]}'>{$a_size[$i][$ii]["size"]}</option>\n";
}
}
}
print "</select>\n";
?>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 量を"size"で表現することの可否等について 1 2022/12/07 14:49
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP 記述のおかしいところを教えて下さい。 1 2023/02/03 11:25
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpでのセレクトボックスの値を...
-
Smartyで、セレクトボックスが...
-
mysql データ登録
-
連動させたいセレクトボックス...
-
セレクトフォームで選択した複...
-
php プルダウンメニュー 時刻...
-
選択したタグ、入力した検索文...
-
頭文字→大学→学部を選択する入...
-
PHP で画面の一部だけを変えたい。
-
<select>文、foreachと初期値設定
-
選択されたプルダウンの値を変...
-
複数のセレクトボックスで
-
POSTしたデータがリストボック...
-
プルダウンとCSVの連動
-
PHPで診断しておすすめの本を紹...
-
PHPでURLにジャンプするには?
-
検索時の選択内容を保持する方法
-
Flaskでサーバー立ち上げに関して
-
PHPの関数実行
-
laravelを利用してコントロール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミング言語で、使える...
-
プルダウンとCSVの連動
-
複数のセレクトボックスを1つに...
-
複数 selectフォームから今回on...
-
【PHP&JavaScript】複数の別ウ...
-
「"」(ダブルクォーテーション)...
-
phpで重複チェック
-
phpでのセレクトボックスの値を...
-
php セレクトボックス 値取得
-
<select>文、foreachと初期値設定
-
ラジオボタンの値を受け取ってP...
-
2つのプルダウンメニュから受け...
-
連動させたいセレクトボックス...
-
PHP セレクトボックスの値 GET...
-
Smartyで、セレクトボックスが...
-
現在時刻を反映させた時刻のプ...
-
PHPとpostgreSQL プルダウンの作成
-
[Ethna]selectボックスに空値を...
-
GET又はPOSTで受け取るデータに...
-
プルダウンで選択された値を保持
おすすめ情報