1 stands for "Good"
2 stands for "Bad"
3 stands for "Ugly"
可以实现两种方法,如下所示。 一个比另一个要高的效率吗? 还有其他更直观的方法来实施此操作吗?
switch($code)
{
case 1:
$result = "Good";
break;
case 2:
$result = "Bad";
break;
case 3:
$result = "Ugly";
break;
default:
$result = NULL;
}
$array = array(
1 => "Good",
2 => "Bad",
3 => "Ugly"
);
$result = $array[$code];
您要在查找方面做什么。
如果只是键 - >值对的查找 - 数组是一种方法
case
array
case
在大多数情况下,选项不如较低,因为它的可扩展性较低,并且无法在运行时间变化。
要模拟
default
案例,请使用类似的东西
$result = in_array($key, $lookup) ? $lookup[$key] : $default;
第二个例子。主要原因是在新条目中编写的代码较少,但是它也更灵活,并且很快imanthy是更快的。但是要实现the break语句的情况,“查找”行/函数应该看起来像:
default
明确地说,您可以使用更简单的语法来完成此操作:
阵列用第一对[]初始化,并且特定值是访问第二对的。 我不知道以来我最近在随机教程上遇到的这项构造的哪个版本的PHP,如果我遇到更多详细信息,它将更新答案。 我在开关块上建议查找阵列,但很少有例外。 坦率地说,我对开关块有偏见,因为如果它们写有适当的编码标准,它们会非常可怕地张开脚本。 另外,您可以与所有这些表达式产生的膨胀作斗争,但随后您会得到一个可怕的密集脚本。
,我强烈敦促查找阵列。 它将数据资产与处理的精美分开。 这导致干净,可读,可维护的代码。 此外,随着您的应用程序的发展/成熟,您可以在需要时轻松地将数据收集到数据库表。 about效率,采用
$result=[1=>"Good",2=>"Bad",3=>"Ugly"][$code];
或case
(取决于要求)的查找技术非常快,因为PHP如何参考密钥。
break
。
这里是上下文的片段...代码:(demo
)
isset()
array_key_exists()
当然,您可以在查找阵列中写出钥匙以提高人类的可读性。
修理您的PHP版本允许它,我建议无融合操作员简短。
如果您不需要在任何后续过程中利用查找阵列,则可以用上述片段的现代等效段来实现。 demo
in_array()
从php 8.0 php 8.0,您也可以使用
match表达式。 它比开关更简洁,使用严格的比较,并且具有默认选项,其中查找数组将在没有null合并默认值(
$lookup = [
null,
"Good",
"Bad",
"Ugly"
];
foreach (range(0, 5) as $test) {
echo $test , ' : ' , ($lookup[$test] ?? $lookup[0]) , "\n";
}
的情况下抛出数组 由于匹配的实现,没有理由将开关用于简单查找,除了捕获默认值。 在您的榜样看起来像那样
0 : // null
1 : Good
2 : Bad
3 : Ugly
4 : // null
5 : // null
绝对是后者,特别是如果您有很多数据...