派遣のお仕事情報満載!!アドバンティアで求人検索

【PHP】繰り返し処理中(foreach)にて配列の最初と最後だけに処理をしたい時は?

YK
【PHP】繰り返し処理中(foreach)にて配列の最初と最後だけに処理をしたい時は?

PHPのforeachを使用したとき、最初だけこの処理をしたい!!最後だけこの処理がしたい!!という場面に遭遇することがあると思います。

その際に、本記事で解決に繋がれば幸いです。

PHPのバージョンにより実装方法が異なりますので2パターンとあまり推奨できませんが2パターンの計4パターンの方法を記載します。

PHP 7.3以降

PHPのバージョンが7.3以降の実装はこちらになります。

array_key_first関数array_key_last関数を使用して、最初と最後を判別いたいます。

コード


$array = ['red', 'yellow', 'blue', 'green'];
foreach ($array as $index => $value) {
    if ($index === array_key_first($array)) {
        // 始端処理:最初だけの処理
        echo '最初にだけ処理したいことを記載します。';
    }

    echo $value';

    if ($index === array_key_last($array)) {
        // 終端処理:最後だけの処理
        echo '最後にだけ処理したいことを記載します。';
    }
}

出力結果

最初にだけ処理したいことを記載します。

red

yellow

blue

green

最後にだけ処理したいことを記載します。

PHP 7.3以前

PHPのバージョンが7.3以前の実装はこちらになります。

array_key_first関数array_key_last関数自作して、

function_exists関数を使用して、指定した関数が定義されているか判別いたします。

コード


// 関数
if (!function_exists('array_key_first')) {
    function array_key_first(array $arr) {
        foreach($arr as $key => $unused) {
            return $key;
        }
        return;
    }
}
if (!function_exists("array_key_last")) {
    function array_key_last(array $arr) {
        if (empty($arr)) {
            return;
        }
        return array_keys($arr)[count($arr) - 1];
    }
}

// 処理
$array = ['red', 'yellow', 'blue', 'green'];

foreach ($array as $index => $value) {
    if ($index === array_key_first($array)) {
        // 始端処理:最初だけの処理
        echo '最初にだけ処理したいことを記載します。';
    }

    echo $value;

    if ($index === array_key_last($array)) {
        // 終端処理:最後だけの処理
        echo '最後にだけ処理したいことを記載します。';
    }
}

出力結果

最初にだけ処理したいことを記載します。

red

yellow

blue

green

最後にだけ処理したいことを記載します。

reset関数 + end関数

reset関数は配列から最初の要素をend関数は最後の要素を取得します。

取得した値を使用してif文で一致するか判別します。

※注意事項:
配列内の要素を使用している為、重複した要素がある場合は期待した結果を得ることができません。

コード


$array = ['red', 'yellow', 'blue', 'green'];
foreach ($array as $value) {
    if ($value === reset($array)) {
        // 始端処理:最初だけの処理
        echo '最初にだけ処理したいことを記載します。';
    }

    echo $value;

    if ($value === end($array)) {
        // 終端処理:最後だけの処理
        echo '最後にだけ処理したいことを記載します。';
    }
}

出力結果

最初にだけ処理したいことを記載します。

red

yellow

blue

green

最後にだけ処理したいことを記載します。

Count関数 + インクリメント

Count関数で配列の総要素数を取得して、繰り返し処理内でインクリメントした値とif文で最初と最後を判別します。

コード


$array = ['red', 'yellow', 'blue', 'green'];
$array_count = count($array);
$i = 0;
foreach ($array as $value) {
    if ($i === 0) {
        // 始端処理:最初だけの処理
        echo '最初にだけ処理したいことを記載します。';
    }

    echo $value;
    $i++;

    if ($i === $array_count) {
        // 終端処理:最後だけの処理
        echo '最後にだけ処理したいことを記載します。';
    }
}

出力結果

最初にだけ処理したいことを記載します。

red

yellow

blue

green

最後にだけ処理したいことを記載します。

「東三河・西三河で働く!」高時給な派遣求人が満載!

CTA-IMAGE いまあなたは転職活動で困っていませんか? 「こんなに転職活動を頑張っているのに、良い職場に出会えないのだろう?」 そんな悩みがあるなら派遣会社アドバンティアで解決しましょう! 軽作業・工場系・事務系のお仕事が満載!! 高時給!週払い可能!家電付きアパート・マンションを貸し出し♪車・携帯レンタル可能!アドバンティアは充実したサポート体制であなたのご応募をお待ちしております。 TEL面接実施中!!

>> アドバンティア求人検索はこちら <<

このページを評価してください

[kkstarratings force]