进行比较的最快和最有效的方法是什么(PHP)
我想知道进行比较的最快和最有效的方法是什么。 这将对我的代码更有意义:进行比较的最快和最有效的方法是什么(PHP),php,performance,Php,Performance,我想知道进行比较的最快和最有效的方法是什么。 这将对我的代码更有意义: public function exampleChangeVariable ($variable) { if ($variable == 'notif_received_title') { $variable = _('Text 1'); } else if ($variable == 'notif_inprogress_title') { $variable = _('Text 2');
public function exampleChangeVariable ($variable) {
if ($variable == 'notif_received_title') {
$variable = _('Text 1');
}
else if ($variable == 'notif_inprogress_title') {
$variable = _('Text 2');
}
else if ($variable == 'notif_preparation_title') {
$variable = _('Text 3');
}
else if ($variable == 'notif_positif_title') {
$variable = _('Text 4');
}
else if ($variable == 'notif_negatif_title') {
$variable = _('Text 5');
}
else if ($variable == 'notif_accepted_title') {
$variable = _('Text 6');
}
else if ($variable == 'notif_rejected_title') {
$variable = _('Text 7');
}
return $variable;
}
这个函数可以在一个foreach
(数据库中恢复的数据)中找到,我想最大限度地优化它
- 我应该用数字作为变量吗
- 如果我想使用文本变量,长度重要吗?(
将notif_received_title
)received
- 如果是一个好的选择,则选择
- 我怎样才能做得更好?(知道如果,他可能有大约二十个
)
public function exampleChangeVariable($variable)
{
$assoc = [
'notif_received_title' => 'Text 1',
'notif_inprogress_title' => 'Text 2',
'notif_preparation_title' => 'Text 3',
'notif_positif_title' => 'Text 4',
'notif_negatif_title' => 'Text 5',
'notif_accepted_title' => 'Text 6',
'notif_rejected_title' => 'Text 7'
];
if (array_key_exists($variable, $assoc)) {
return $assoc[$variable];
}
return null;
}
尽管仍有改进的余地(因为键具有类似的模式)但这看起来不像是会导致瓶颈的代码,因此优化它不会从中获得更多(如果它得到了什么的话)。不过,使用数组映射肯定会使它更干净。我建议使用查找数组。可能的dupe没有像我建议的那样使用键和值。但这绝对是这个网站上许多问题的重复。请在发布问题之前进行研究。如果不将其归结为一种意见,那么试图给出一个通用的“这种方式是最好的”答案是不可能的。我还建议,如果数据来自数据库,这可能是最大的性能问题,相比之下,这是微不足道的。这是一个错误。无论您使用什么方法,对性能的影响都是可以忽略的,除非您在一个循环中处理数以百万计的数据点(尽管某些方法可能比其他方法更易于程序员读取)。in_数组是错误的函数。我想你的意思是数组存在,或者甚至可能是设置。代码更“干净”,减少要比较的文本的大小是否有影响?@GordonM对,我的错,我编辑了答案。@不,它没有,只是减少了冗余。戈登是对的。我不喜欢这个答案。我将使用isset over array_key_exists'检查空值是不必要的。