which is best array_search or in_array?

前端 未结 7 1026
滥情空心
滥情空心 2020-12-23 20:17

I have a large while loop function, every time it gets loaded for check with current URL name. So I need to know which one is better to check the UR

相关标签:
7条回答
  • 2020-12-23 21:04

    There's no real answer here. So I tried it, myself.

    $haystack = array
    (
        'apple',
        'banana',
        'cherry',
        'lemon',
        'lime',
        'orange',
        'potato',
        'rutabaga'
    );
    $haySize = count($haystack);
    
    $loops = isset( $_SERVER['argv'][1] ) ? $_SERVER['argv'][1] : 10000;
    // echo 'Loops: ' . $loops . "\n";
    
    $start = microtime(true);
    for ($i = 0; $i < $loops; $i++)
    {
        $needle = $haystack[ $i % $haySize ];
    }
    $zeroTime = microtime(true) - $start;
    // echo sprintf('%0.3f', $zeroTime * 1000) . ' ms : zero time' . "\n";
    
    $start = microtime(true);
    for ($i = 0; $i < $loops; $i++)
    {
        $needle = $haystack[ $i % $haySize ];
        $dummy = array_search($needle, $haystack);
    }
    echo sprintf('%0.3f', (microtime(true) - $start - $zeroTime) * 1000) . ' ms : array_search' . "\n";
    
    $start = microtime(true);
    for ($i = 0; $i < $loops; $i++)
    {
        $needle = $haystack[ $i % $haySize ];
        $dummy = in_array($needle, $haystack);
    }
    echo sprintf('%0.3f', (microtime(true) - $start - $zeroTime) * 1000) . ' ms : in_array' . "\n";
        echo sprintf('%0.3f', (microtime(true) - $start) * 1000).' ms : in_array'."\n";
    

    For a typical use case, in_array wins, but the difference is negligible:

    22.662 ms : array_search
    22.104 ms : in_array
    

    Updated 2014-01-02: added noop loop to "zero the scale". Running PHP 5.4.17 on a new MacBook pro, this is a typical result:

    24.462 ms : array_search
    24.984 ms : in_array
    
    0 讨论(0)
提交回复
热议问题