慣れてくると、どんどん省略したり、ワンライナー(一行)で書けるものは、
そうしたいと考えると思います。
それによって、ソースコードが簡潔になるのは良いことです。
しかし、それにも落とし穴があります。
たとえば以下のようなコードを書いていたりしませんか?
for ($i = 0;$i < count($lists); $i++)
{
//処理
}
$i < count($lists) すると、よりまとまったように感じるかもしれませんが、
実はこれは非常に問題があります。
というのも、for文のループの回数分、count($lists)が実行されてしまうからです。
このループが1000回であれば、1000回count($lists)が実行されることになります。
面倒でも、
$counts = count($lists);
for ($i = 0;$i < $counts; $i++ )
{
}
このようにするべきでしょう。
ちなみに実際に以下のコードでどれくらい違うか計ってみましょう。
//とりあえず要素が10000個ある配列作る。
$n = 10000;
while($n--) {
$list[] = "test";
}
//中に入れる場合。
$start = microtime(true);
for ($i=0;$i <=count($list);$i++){}
$end = microtime(true);
echo $end - $start;
echo "\n";
//外に出す場合。
$start = microtime(true);
$counts = count($list);
for ($i=0;$i <=$counts;$i++){}
$end = microtime(true);
echo $end - $start;
結果は歴然
0.0017509460449219
0.0004489421844482