PHPの基本構文、foreachのお話。
foreach内で文字列操作等をする場合に、最終行判定をして処理を行いますよね。
こんな感じで!
サンプルコード1:
$count = 0;
$array = [1, 2, 3, 4, 5];
foreach($array as $value)
{
$count++;
if ($value === end($array)) {
echo '配列の最後は'.$count.'個目!'. PHP_EOL;
}
}
結果:
配列の最後は5個目!
OK! 最終行判定はend()でできた!
では次のパターンでの場合、どうなるだろうか
サンプルコード2:
$count = 0;
$array = [1, 2, 5, 4, 5];
foreach($array as $value)
{
$count++;
if ($value === end($array)) {
echo '配列の最後は'.$count.'個目!'. PHP_EOL;
}
}
結果:
配列の最終は3個目!
配列の最終は5個目!
oh.. 最終行目ではない3つ目も文字出力されているではないか
配列の3つ目と5つ目が同じ値のため、出力されていました。
foreachを使って配列の最後を取る場合、値によっては適切な処理ができないため
ループカウンターを使って取得しましょう!
サンプルコード3:
$loop_count = 0;
$array = [1, 2, 5, 4, 5];
foreach($array as $value)
{
$loop_count++;
if ($loop_count == count($array)) {
echo '配列の最終は'.$loop_count.'個目!'. PHP_EOL;
}
}
結果:
配列の最終は5個目!
初心者ではなくても結構やってしまう
PHPあるあるでした