2

我有一段现有的代码,我在理解上有问题。

我通常不喜欢速记,因为它需要更改配置,而且我更难阅读。由于这个原因,我不是特别熟悉它。现有代码是由喜欢速记的人编写的。

当我遇到这个时:

if($type == 'a') $type = 'Type A';
否则 if($type == 'b') $type = 'Type B';
否则 if($type == 'c') $type = 'Type C';

我把它看成一个简单的 if 和 else if 字符串。我将其转换为:

if($type == 'a') {
  $type = 'A 型';
} 否则 if($type == 'b') {
  $type = 'B 型';
} 否则 if($type == 'c') {
  $type = 'C 型';
}

我认为这很简单,但是在实践中我得到了不同的结果。上面的两个片段有什么区别?

4

6 回答 6

4

它们完全一样,区别肯定在别处。

那是前后代码的复制/粘贴吗?

不过,我同意 anubhava 的观点,为了清楚起见,我倾向于将其转换为 switch case:

switch ($type) {
  case 'a':
    $type = 'Type A';
    break;

  case 'b':
    $type = 'Type B';
    break;

  case 'c':
    $type = 'Type C';
    break;

  default:
    break;
}
于 2011-03-17T21:03:08.130 回答
1

它们应该是相同的。我会制作一个测试文件,但我认为它不会改变这个事实......

哇,做了一个测试文件:

<?php
$type = 'a';

if($type == 'a') $type = 'Type A';
else if($type == 'b') $type = 'Type B';
else if($type == 'c') $type = 'Type C';
echo $type . "\n";


$type = 'b';

if($type == 'a') $type = 'Type A';
else if($type == 'b') $type = 'Type B';
else if($type == 'c') $type = 'Type C';
echo $type . "\n";


$type = 'c';

if($type == 'a') $type = 'Type A';
else if($type == 'b') $type = 'Type B';
else if($type == 'c') $type = 'Type C';
echo $type . "\n";


$type = 'a';

if($type == 'a') {
  $type = 'Type A';
} else if($type == 'b') {
  $type = 'Type B';
} else if($type == 'c') {
  $type = 'Type C';
}
echo $type . "\n";

$type = 'b';

if($type == 'a') {
  $type = 'Type A';
} else if($type == 'b') {
  $type = 'Type B';
} else if($type == 'c') {
  $type = 'Type C';
}

echo $type . "\n";
$type = 'c';

if($type == 'a') {
  $type = 'Type A';
} else if($type == 'b') {
  $type = 'Type B';
} else if($type == 'c') {
  $type = 'Type C';
}
echo $type . "\n";

结果确实是一样的。

Type A
Type B
Type C
Type A
Type B
Type C
于 2011-03-17T21:04:16.780 回答
1

我认为您首先需要php switch case来简化上述代码。

虽然我必须提到我没有发现任何代码差异 2 版本的代码。只是 switch case 比许多 if、else if、else if 语句更具可读性。

于 2011-03-17T21:04:21.433 回答
1

这实际上不是简写语法。这只是一个 if/else if/else if,其中每个部分只有一个语句,因此不需要{}集合。

使用换行符格式化时会更清晰一些:

if($type == 'a')
    $type = 'Type A';
else if($type == 'b')
    $type = 'Type B';
else if($type == 'c')
    $type = 'Type C';
于 2011-03-17T21:10:16.763 回答
1

$type 是否返回不受欢迎的?如果是,我会:

if($type == 'a') {
  $type = 'Type A';
} else if($type == 'b') {
  $type = 'Type B';
} else if($type == 'c') {
  $type = 'Type C';
} else {
 $type = 'Other Type';
}

但我完全同意上面的人,实际上你应该把它翻译成:

switch ($type) {
  case 'a':
    $type = 'Type A';
    break;

  case 'b':
    $type = 'Type B';
    break;

  case 'c':
    $type = 'Type C';
    break;

  default:
    $type = 'Other Type';
    break;
}

这样,您总是可以看到不需要的数据是什么,这取决于我总是设置默认值的情况,尤其是在开发模式下。

于 2011-06-18T05:42:07.563 回答
0

它们是相同的,错误在别处。

于 2011-03-17T21:06:07.443 回答