- ベストアンサー
効率的なIF文の書き方のご教授お願いします
- IF文を効率的に書く方法を教えてください。
- 長いIF文をよりシンプルかつスマートに書く方法を教えてください。
- IF文のコードを短くするためのテクニックを教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
$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)の方がよろしいかと。
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
お遊びレベルでよければこんな書き方もあります $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メートル"の表記の十のケタが全角になっているので そのままではうまくいきません。
こんにちわ。 関数とハッシュを使ってみてはどうでしょう ------------------------------------------------------- $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; }
お礼
ありがとうございました。 もう少し短く出来ればな~っと思いましたが、勉強になりました!
- agunuz
- ベストアンサー率65% (288/438)
配列にしてしまった方があとあとのことを考えても楽だと思う。 $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];
お礼
ありがとうございました! 勉強になりました!
お礼
ありがとうございました! とても参考になりました