PR

常識的なことですが、キーと値が対応した連想配列を使用することはよくあると 思います。何回も使用するマスターの値を配列として保存して、複数回アクセス する場合、switch文やif文を使用している場合は参考にしてみてください。

今回考えるのは「はい」、「いいえ」、「無回答」といった値が yes、no、 no_answer という文字列に対応して保存されているとします。

さらに、はい・いいえを表すために yes、no、no_answer という値がリストに 入っている場合を考えます。

$list = array(
  array(
    'yes_no' => 'yes', '...' => '...', ......
  ),
  array(
    'yes_no' => 'no', '...' => '...', ......
  ),
  ......
);

このリストの一覧表示ではい・いいえを出力するために、変数の内容を変更する ロジックを書く場合、以下のようなスクリプトを書いてはいないでしょうか。

foreach ($list as $k => $v) {
// IF文を使用する場合
  if ($v['yes_no'] == 'yes')
    $list[$k]['yes_no_val'] = 'はい';
  if ($v['yes_no'] == 'no')
    $list[$k]['yes_no_val'] = 'いいえ';
  if ($v['yes_no'] == 'no_answer')
    $list[$k]['yes_no_val'] = '無回答';

// switch文を使用する場合
  switch ($v['yes_no']) {
  case 'yes':
    $list[$k]['yes_no_val'] = 'はい';
    break;
  case 'no':
    $list[$k]['yes_no_val'] = 'いいえ';
    break;
  case 'no_answer':
    $list[$k]['yes_no_val'] = '無回答';
    break;
  }
}

これは以下のような連想配列のハッシュを使用すればもっと簡単に、高速に処理 することができます。

// ハッシュとなる配列
$YES_NO_LIST = array(
  'yes'       => 'はい',
  'no'        => 'いいえ',
  'no_answer' => '無回答'
);

foreach ($list as $k => $v) {
  $list[$k]['yes_no_val'] = $YES_NO_LIST[$v['yes_no']];
}

ハッシュの使用は特にバッチ処理などで大量のデータを扱うときに有効です。ま た、テーブルにキーと文字列の情報が保存されている場合、テーブル結合をする SQL文を複数実行よりも、一度その内容を連想配列形式のハッシュで保存して使 用すると、実行スピードが向上する場合もあります。