进行比较的最快和最有效的方法是什么(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'检查空值是不必要的。