配列からプルダウン用のHTMLを生成するプログラムを作成しています。
結果としては
<option value="tomato">トマト</option>
<option value="onion">たまねぎ</option>
<option value="carrot">にんじん</option>
のHTMLが生成されるようにしたいのです。
(実際の画面表示はプルダウンになっています)
function createDropDownListByArray($key, $val ) {
$array_name = array(
$key => $val,
);
foreach( $array_name as $key => $val ){
$tag .= '<option value="' . $key . '">' . $val . '</option>' . "\n";
}
return $tag;
}
上記のようにつくってみましたが、この場合ファンクションを呼び出すと
1つずつしかHTMLを生成できません。
再度ファンクションを呼び出すと、上書きされてしまいます。(当たり前ですが)
可変引数?(func_get_args())を使えないかとも思いましたが、できませんでした。
上記のように一度に全ての結果を表示したい場合、どのような記述に変えたらいいでしょうか?
詳しい方、どうか教えてください。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
createDropDownListByArray($key, $val )
この関数を呼んだ場合に生成される配列は
array($key => $val)になってますので
当然一組のoptionしか作られませんよね?
一番簡単な方法としては、他の方が回答されているように
関数に渡す引数を配列にするのが一番かと。
分かりやすく書くとこんな感じかな。
$fruit = createDropDownListByArray(array('tomato' => 'トマト', 'carrot' => 'ニンジン'));
で、関数の方も
function createDropDownListByArray(&$array_name) {
に修正して、
$array_name = array(
$key => $val,
);
を削除すれば希望通りの動きになると思いますよ。
丁寧なご回答ありがとうございます。
私自身が少し内容を勘違いしていたようで
お二人に教えていただいた方法で無事動きました。
とても助かりました。
どうもありがとうございました。
No.1
- 回答日時:
どういった動きをさせたいのか不明ですが、こんなんでいけます。
引数の数変えちゃマズいのでしょうか?
<?php
function createDropDownListByArray(&$list) {
$array_name = $list;
foreach( $array_name as $key => $val ){
$tag .= '<option value="'.$key.'">'.$val.'</option>'."\n";
}
return $tag;
}
$list = array("tomato" => "トマト", "onion" => "たまねぎ", "carrot" => "にんじん");
echo createDropDownListByArray($list);
Smartyを使っても出来ます。
クラス構造にして、追加・削除を場合に応じて行って、最終的にcreateするような
作りなら、そういう作りに書き換えないと、このままじゃ出来ません。
早速のご丁寧な回答ありがとうございます。
ファンクションを呼び出すときに、直接値を指定したいため
例:$fruit = createDropDownListByArray("tomato", "とまと")
naktak様に教えていただいたやり方とは少し違うかな?といった感じです。
参考にさせていただきます。 ありがとうございます。
他にいい方法があれば、教えてくださればありがたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript 中百舌鳥駅と深井駅を入れ替えて選択しても同じ挙動にしたいです。 2 2022/06/24 18:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3つの連想配列を交互に代入し...
-
マッチング処理(1:N)
-
foreachで上限回数指定方法また...
-
foreachの間にテーブルの<TR>を...
-
VB.NET で 二次元のハッシュは...
-
file_existsでファイル名の部分...
-
配列をループでたくさん宣言し...
-
Resource id #3 と表示されま...
-
スカラーのベクトル微分
-
ヒアドキュメントの中のfor文
-
別ファイルの構造体の値を読み...
-
複数行のデータのPOST処理に関して
-
PHPでテキストファイルの一部を...
-
String だと「 ByRef引数の型が...
-
verilogで、配列の一部をタスク...
-
プルダウンメニューでCSVデータ...
-
PHPのmin関数、「1」以上の数値...
-
phpで、連想配列を普通の配列に...
-
配列を回すとき、最後の要素だ...
-
配列一致(要素順番は違うが内容...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
foreachで上限回数指定方法また...
-
VB.NET で 二次元のハッシュは...
-
PHP、{}記号の意味
-
マッチング処理(1:N)
-
sqlのデーターを『あ行』『か行...
-
3つの連想配列を交互に代入し...
-
smartyのforeachの使い方
-
Smartyでインクリメント
-
Excel VBAでフィルター後の対象...
-
連想配列でキーを利用して一部...
-
ラジオボタンをランダムに表示...
-
ftokが動かない?
-
配列からプルダウン用のHTMLを生成
-
リストボックス複数選択抽出方法
-
関数の引数に配列を初期化なしで。
-
foreachの間にテーブルの<TR>を...
-
smartyでtplファイルでの2次元配列
-
PHPで変数名にハイフンを使うに...
-
PHPでJSONを扱うときに配列の参...
-
PHPで連想配列のプルダウンメニ...
おすすめ情報