二维if / then矩阵

时间:2016-08-06 14:58:27

标签: php if-statement

我必须根据两个变量($x$y)采取行动。以下内容满足了这些需求,但不是非常易读,$x/$y的{​​{1}}与1/4的{​​{1}}做同样的事情并不是很明显。从可读性和可维护性的角度来看,对此进行编码的最佳方法是什么?虽然我特别要求PHP解决方案,但希望解决方案可以扩展到其他语言,例如JavaScript。

$x/$y

1 个答案:

答案 0 :(得分:1)

如果您创建了一个数组来映射它,它将像这样工作:

$task_x = [
   1  => [1 => 1, 2 => 1, 3 => 2, 4 => 2, 'd' => 3],
   2  => [1 => 1, 2 => 1, 3 => 2, 4 => 2, 'd' => 3],
   3  => [1 => 1, 2 => 1, 3 => 2, 4 => 2, 'd' => 3],
   4  => [1 => 4, 2 => 4, 3 => 2, 4 => 4, 'd' => 2],
   5  => [1 => 4, 2 => 4, 3 => 2, 4 => 4, 'd' => 2],
  'd' => [1 => 6, 2 => 2, 3 => 2, 4 => 2, 'd' => 3]
];

// PHP 7        
$task_y = $task_x[$x] ?? $task_x['d'];
$task_n = $task_y[$y] ?? $task_y['d'];

// or PHP 5
//$task_y = isset($task_x[$x]) ? $task_x[$x] : $task_x['d'];
//$task_n = isset($task_y[$y]) ? $task_y[$y] : $task_y['d'];

doTask($task_n);