1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

foreachを使って配列の最後を取るお話。

Last updated at Posted at 2019-06-24

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あるあるでした:point_up:

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?