0

if ステートメントを使用して一連の条件を書いていますが、見栄えを良くするためにこれを単純化する方法はありますか?

$value = "1";

      if (($subvalue == 1) && ($subbucket == 1)){
        $value = "1";
      }

      if (($subvalue == 1) && ($subbucket == 2){
        $value = "1A";
      }

      if (($subvalue == 1) && ($subbucket == 3)){
        $value = "2A";
      }

      if (($subvalue == 2) && ($subbucket == 1)){
        $value = "3A";
      }

      if (($subvalue == 2) && ($subbucket == 2)){
        $value = "3B";
      }

      if (($subvalue == 2) && ($subbucket == 3)){
        $value = "3C";
      }

面倒だと思いますが、これを書き直す方法はありますか?

4

3 に答える 3

3

一般的な解決策、キーを何でも持つことができる場合:

$lookup = array(
  1 => array(
    1 => "1",
    2 => "1A",
    3 => "2A"),
  2 => array(
    1 => "3A",
    2 => "3B",
    3 => "3C"));

$value = $lookup[$subvalue][$subbucket];
if (!$value) $value = "1";

それ以外の場合、質問に示されているような連続する整数キーの場合、

$lookup = array(
  array("1", "1A", "2A"),
  array("3A", "3B", "3C"));
$value = $lookup[$subvalue - 1][$subbucket - 1];
if (!$value) $value = "1";
于 2013-09-10T01:25:30.840 に答える
0

これを単純化したものと考えますか。

$arr = array('1', '1A', '2A', '3A', '3B', '3C');
$value = $arr[($subvalue - 1) * 3 + ($subbucket - 1)];
if (!$value) $value = "1";   // steal this line from @Amadan

@Amadanのソリューションと同様に、別のソリューションは次のようになります

$arr = array( 1 => array(1 => '1', 2 => '1A', 3 => '2A'),
              2 => array(1 => '3A', 2 => '3B', 3=> '3C'));
$value = $arr[$subvalue][$subbucket];
if (!$value) $value = "1";
于 2013-09-10T01:25:20.183 に答える