![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?e8efa67)
お分かりになられる方ご教授ください
下記のようなIF文を書きました
if ($name =="6メートル" and $keta =="10メートル") {
$kingaku=$a10;
}elseif ($name =="6メートル" and $keta =="15メートル") {
$kingaku=$a15;
}elseif ($name =="6メートル" and $keta =="20メートル") {
$kingaku=$a20;
}elseif ($name =="6メートル" and $keta =="25メートル") {
$kingaku=$a25;
}elseif ($name =="6メートル" and $keta =="30メートル") {
$kingaku=$a30;
}elseif ($name =="6メートル" and $keta =="35メートル") {
$kingaku=$a35;
}elseif ($name =="6メートル" and $keta =="40メートル") {
$kingaku=$a40;
}elseif ($name =="6メートル" and $keta =="45メートル") {
$kingaku=$a45;
}elseif ($name =="6メートル" and $keta =="50メートル") {
$kingaku=$a50;
}
}elseif ($name =="10メートル" and $keta =="10メートル") {
$kingaku=$b10;
}
}elseif ($name =="10メートル" and $keta =="15メートル") {
$kingaku=$b15;
}
}elseif ($name =="10メートル" and $keta =="20メートル") {
$kingaku=$b20;
}
}elseif ($name =="10メートル" and $keta =="25メートル") {
$kingaku=$b25;
}
}elseif ($name =="10メートル" and $keta =="30メートル") {
$kingaku=$b30;
}
}elseif ($name =="10メートル" and $keta =="35メートル") {
$kingaku=$b35;
}
}elseif ($name =="10メートル" and $keta =="40メートル") {
$kingaku=$b40;
}
}elseif ($name =="10メートル" and $keta =="45メートル") {
$kingaku=$b45;
}
}elseif ($name =="10メートル" and $keta =="50メートル") {
$kingaku=$b50;
}
else {
$kingaku="-";
}
とにかく長いです。。。
これをもっとスマートに書く方法はございますでしょうか?
恐れ入りますがお分かりになられる方教えて下さい
No.3ベストアンサー
- 回答日時:
$names = array('6メートル'=>'a','10メートル'=>'b');
$kingaku = ${$names[$name].(int)$keta};
で一応…。
ただ、全体がどのようなデータ構造になっているか分かりませんが、連想配列を使用した方が分かりやすいのでは?
$products['6メートル'] = array('10'=>1200,'15'=>1800,'20'=>2100,~);
のようにしておけば、ifでひとつひとつ回さなくても、
$products[$name][$keta] のようにして取得できます。(表のイメージです)
また、ほんとに量が多いようなら別途csvファイルにして配列に取り込むとか(あるいはSQL)の方がよろしいかと。
No.4
- 回答日時:
お遊びレベルでよければこんな書き方もあります
$kingaku="-";
if(in_array($name,array("6メートル","10メートル"))){
for($i=10;$i<=50;$i+=5){
if($keta ===$i."メートル") $kingaku=${($name==="6メートル"?"a":"b").$i};
}
}
ただし、命題では$name =="10メートル"の表記の十のケタが全角になっているので
そのままではうまくいきません。
No.2
- 回答日時:
こんにちわ。
関数とハッシュを使ってみてはどうでしょう
-------------------------------------------------------
$kingaku="-";
if ($name =="6メートル") {
$kingaku = func_hoge(1,$keta);
}elseif($name =="10メートル"){
$kingaku = func_hoge(2,$keta);
}
function func_hoge ($kbn,$keta) {
$a = array (
"10メートル" => $a10,
"15メートル" => $a15,
"20メートル" => $a20,
"25メートル" => $a25,
"30メートル" => $a30,
"35メートル" => $a35,
"40メートル" => $a40,
"45メートル" => $a45,
"50メートル" => $a50
);
$b = array (
"10メートル" => $b10,
"15メートル" => $b15,
"20メートル" => $b20,
"25メートル" => $b25,
"30メートル" => $b30,
"35メートル" => $b35,
"40メートル" => $b40,
"45メートル" => $b45,
"50メートル" => $b50
);
$rtn = ($kbn == 1) ? $a[$keta] : $b[$keta];
if (empty($rtn)) return '-';
return $rtn;
}
No.1
- 回答日時:
配列にしてしまった方があとあとのことを考えても楽だと思う。
$names = array("6メートル", "10メートル");
$ketas = array("10メートル", "15メートル", "20メートル", "25メートル", "30メートル", "35メートル", "40メートル", "45メートル", "50メートル");
$values = array(array($a10, $a15, $a20, $a25, $a30, $a35, $a40, $a45, $a50), array($b10, $b15, $b20, $b25, $b30, $b35, $b40, $b45, $b50));
$kingaku = "-";
$key1 = array_search($name, $names);
$key2 = array_search($keta, $ketas);
if ($key1 and $key2) { $kingaku = $values[$key1][$key2];
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 中学校 名前の聞き方 1 2022/09/04 15:47
- Excel(エクセル) マクロ(データ取得と転記)について教えてください 3 2022/12/24 12:18
- Visual Basic(VBA) vbaの計算 if elseと範囲について 6 2022/11/26 01:49
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- 英語 drag persona の意味を教えて下さい 3 2022/06/07 20:25
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- 英語 英語ができる方に質問です。 以下の文がネイティブの方に伝わるかどうかを確認していただけないでしょうか 7 2022/12/16 14:54
- 英語 この英文の意味 6 2023/07/14 17:56
- Visual Basic(VBA) 1つの入力フォルダの値を読み込み、3分割をして新しい変数に代入する方法を教えていただきたいです。 読 4 2022/10/17 20:52
- Visual Basic(VBA) エクセル VBA 難しいです 1 2023/02/21 15:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サブフォルダ内の全てのテキス...
-
functionとclassの使い分け
-
ファイル名を変更してアップロ...
-
テキストボックスの値を取得したい
-
VBA で、スペースを含むファイ...
-
MySQL,PHPのリロードによる二重...
-
PHPからHTMLへの変数の受け...
-
if文のもっとスマートな書き方
-
ファイルのアップロードが出来ない
-
セッションにIDを振って値を代入
-
ドロップダウンで送信先を変更...
-
チェックボックスによる検索
-
PHPで画像の渡しが上手く行きま...
-
VBSのIEオブジェクトでフ...
-
複数のラジオボタングループを...
-
<select>文、foreachと初期値設定
-
table を配列で取得
-
ゼロ除算
-
phpでのボタン押下の活性・非活...
-
input nameで日本語を使うと
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA で、スペースを含むファイ...
-
ファイル名を変更してアップロ...
-
アップロードファイル名の文字化け
-
PHPからHTMLへの変数の受け...
-
プログラミングC++のmapについて
-
phpで変数を使ってcopyできない
-
Flaskでサーバー立ち上げに関して
-
SQLインジェンクション対策法を...
-
POSTの項目に追加
-
パラメータを2個つけたい
-
サブフォルダ内の全てのテキス...
-
フォームで送られてきたメール...
-
PHP FTPサーバへの画像アップロ...
-
連想配列を複数条件で比較して...
-
name属性が全角の場合・・・
-
if function PHP
-
マクロ(VBA)について
-
PDOのprepareでLIKEの部分一致...
-
画像をDBに登録できない
-
テキストボックスの値を取得したい
おすすめ情報