【问题标题】:Optimize an array function优化数组函数
【发布时间】:2022-02-01 21:44:51
【问题描述】:

这是一个测试代码的例子。我想知道如何优化这段代码,知道在我的开发代码中,原始数组来自我检索的一个 API,然后我根据我的需要和计算在具有函数方法的类中进行转换(在$rep 带有三元运算符)。这里的例子是为了简单起见:

当你调用函数testArray() 几百次时,计算时间开始变长,太长了。我想知道是否有办法对此进行优化并更优雅地编写代码。

 $data = array(
        "lemon" => 'test1',
        "tomato" => 'test2',
        "cofee" => 'test3',
        "tree" => 'test4'
    );
    
    
    function testArray($data)
    {
    
        $rep = array(
            'yellow' => $data['lemon'],
            'red' => $data['tomato'],
            'brown' => $data['cofee'],
            'green' => $data['tree']
        );
        return $rep;
    }
    
    echo testArray($data)['yellow'];    // test1
    echo testArray($data)['red'];       // test2
    echo testArray($data)['brown'];     // test3
    echo testArray($data)['green'];     // test4

谢谢,我有点想找到更有效的方法。

【问题讨论】:

  • 好吧,如果我正确理解你的问题,你忽略了可以优化的代码。
  • 我不确定您的确切用例,但也许“生成器”对您有用? php.net/manual/en/language.generators.overview.php
  • 我不知道生成器,我会找出来的。如果不知道如何在我的示例中使用它,您有什么想法吗?

标签: php arrays optimization


【解决方案1】:

您不需要多次调用该函数。只需将其存储到一个变量中,以后再使用即可。

$data = array(
        "lemon" => 'test1',
        "tomato" => 'test2',
        "cofee" => 'test3',
        "tree" => 'test4'
    );
    
    
    function testArray($data)
    {
    
        $rep = array(
            'yellow' => $data['lemon'],
            'red' => $data['tomato'],
            'brown' => $data['cofee'],
            'green' => $data['tree']
        );
        return $rep;
    }
    
    $transformedData = testArray($data);
    echo transformedData['yellow'];    // test1
    echo transformedData['red'];       // test2
    echo transformedData['brown'];     // test3
    echo transformedData['green'];     // test4

【讨论】:

  • 哇,你刚刚看到了没有人看到的东西,....... :-O
  • 现在这么明显了
  • 我希望这个答案能得到 100 万个赞
  • 计算时间几乎除以10。非常感谢。我怀疑是那种愚蠢的东西,我只是没看到,就像脸中间的鼻子^^
  • 甚至除以 20 或 30。显示需要 15 秒的内容,修正后只需半秒。比如什么,小改变,大作用……
猜你喜欢
  • 2012-06-04
  • 2021-02-13
  • 1970-01-01
  • 2019-11-16
  • 2013-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
相关资源
最近更新 更多