-PHP Tips- 第6回 count関数

配列のサイズを決めるのにcount関数を使うタイミングは?
【Tips】forループの前にcount関数を呼ぶ!
【Description】forループの終了判定にcount関数を入れてしまうと、ループの度にcount関数を実行してしまいます。動的にサイズの変わる配列は仕方がないですが、そうでない場合はforループの前にサイズを変数に格納しておきましょう。また、count関数に限らず終了判定では演算(例:$i < $cnt + 1)を含まないようにしましょう。

<?php
define("WORK_TIME", 1000);

function getmicrotime(){
    list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
}

$hoge = range(0, 100);

//countする場合
$start_time = getmicrotime();
for($i = 0; $i < WORK_TIME; $i++){
    for($j = 0; $j < count($hoge); $j++){
        $dummy = $hoge[$j];
    }
}
$count_time = sprintf("%.4f", getmicrotime() - $start_time);

//countしない場合
$start_time = getmicrotime();
$cnt = count($hoge);
for($i = 0; $i < WORK_TIME; $i++){
    for($j = 0; $j < $cnt; $j++){
        $dummy = $hoge[$j];
    }
}
$no_count_time = sprintf("%.4f", getmicrotime() - $start_time);
?>

<html>
<head><title>count関数の比較</title></head>
<body>
countした場合の結果:<?php echo($count_time);?>秒<br>
countしない場合の結果:<?php echo($no_count_time);?>秒<br>
</body>
</html>
タイトルとURLをコピーしました