PHPでのend関数の使い方

19/05/12 23:56:00     19/06/02 13:07:47

PHPでのend関数の使い方

end関数とは、配列の最後の値を取得するための関数です。

使用目的としては、単純に配列の最後の値を知りたい場合や、最後の値を読み込んだタイミングで別の処理に移行するような際に使用します。

end関数の使い方

end関数の構文は非常にシンプルで、以下のようになります。

end($配列名)

引数に配列名を指定すれば関数が機能します。サンプルコードは以下です。

<?php
$coutries = ['America', 'Brazil', 'Canada', 'Dominica', 'Ecuador', 'France'];
//end関数を使用して配列の最後の要素を取得する
$countries_end = end($coutries);
echo.$countries_end;
?>

上記のコードを実行すると、「France」と出力されます。見たまんまかと思いますが、配列の一番後ろの要素が取得されました。

ついでですが、同様にreset関数を使用すると配列の先頭の要素を取得できます。サンプルコードは以下です。

$countries = ['America', 'Brazil', 'Canada', 'Dominica', 'Ecuador', 'France'];
//resetを使用して先頭の要素を取得する
$value = reset($countries);

foreach文で配列の最後の要素を取得する

foreach文では、end関数を使用するのと同様に配列の最後の要素を取得できます。

詳細は後から解説しますが、まずはサンプルコードを見てみます。

<?php
$countries = ['America', 'Brazil', 'Canada', 'Dominica', 'Ecuador', 'France'];
$i = 1;
foreach($countries as $value){
    if (count($countries) == $i){
        echo '最後の値:'.$countries[$i-1];
    }
    $i++;
}
?>

上記のコードを実行すると、「最後の値:France」と出力されます。

ただしこのコードを理解するためにはそもそもforeachの使い方を知っている必要があるので、foreachの使い方について解説します。

foreachについて

foreach文は配列の繰り返し処理に付けるコードで、構文は以下のようになります。

foreach ($配列 as $value){
    処理
}

これがもっとも基本的なforeachの構文です。またforeach文は連想配列のキーと値を指定することも可能で、その場合以下のようになります。

foreach ($配列 as $key => $value){
    処理
}

上記構文を使用したサンプルコードは以下です。

$countries = ['America', 'Brazil', 'Canada', 'Dominica', 'Ecuador', 'France'];
foreach($countries as $value){
    echo $value.'<br>';
}

このコードを実行すると、以下のような出力結果になります。

America
Brazil
Canada
Dominica
Ecuador
France

一応for文と対比させるためにfor文で記述してみると、以下のようになります。

$countries = ['America', 'Brazil', 'Canada', 'Dominica', 'Ecuador', 'France'];
for ($i = 0 ; $i < count($countries); $i++) {
    echo $countries[$i].'<br>';
}

ループ処理ではfor文を使用する方が一般的で、他のプログラミング言語の経験者の場合配列を扱う場合にも普通にfor文を使用していたかもしれません。しかしPHPでは配列でループ処理を行う場合foreachで実装した方がシンプルです。

foreachに慣れないうちは多少書きにくさを感じるかもしれませんが、見ての通りそれほど難しい構造にはなっていません。むしろfor文で書くよりも指定が少なくミスが少ないので、PHPで配列をループで回すならforeachを使用する方がおすすめです。

array_pop関数で配列の最後の要素を取り除く

上では配列の最後の要素を取得する方法を紹介しましたが、配列の最後の要素を取り除くことも可能です。使用する関数はarray_pop関数です。構文は以下になります。

array_pop(削除対象の配列名)

引数で配列を指定するだけなので書き方はシンプルです。次にarray_pop関数を使ったサンプルコードになります。

$countries = ['America', 'Brazil', 'Canada', 'Dominica', 'Ecuador', 'France'];
//配列末尾の値を削除する
array_pop($countries);
print_r($countries);

実行すると以下のように出力されます。

Array
(
[0] => America
[1] =>Brazil
[2] => Canada
[3] => Dominica
[4] => Ecuador
)

配列の最後の要素の文字を消す

array_pop関数は配列の最後の要素を削除する関数ですが、文字のみを削除することも可能です。具体的にはrtrim関数を使用します。rtrim関数は指定した文字列の最後の文字を取り除く関数です。構文は以下のようになります。

rtrim ( $文字列 [, $取り除く文字 ] )

rtrim関数を使用したサンプルコードは以下です。

<?php
$countries = ['America', 'Brazil', 'Canada', 'Dominica', 'Ecuador', 'France'];
$i = 0;
foreach($coutries as $value){
    $coutries_str = $coutries_str.$coutries[$i];
    $i++;
}
echo "カンマ除去前:".$coutries_str;
//カンマを取り除く
$coutries_str = rtrim($coutries_str, ',');
echo '<br>';
echo "カンマ除去後:".$coutries_str;
?>

このコードを実行した出力結果は以下です。

カンマ除去前:America,Brazil,Canada,dominica,Ecuador,France,
カンマ除去後:America,Brazil,Canada,dominica,Ecuador,France

第二引数にカンマを指定しているため、一番後ろのカンマが削除されています。ポイントとしては、すべてのカンマが削除されるのではなく、あくまでも一番最後のカンマのみが削除されるということです。

あまり役に立たなさそうに思われるかもしれませんが、文字列の一番後ろに区切り文字が入ってしまったときなどに使えるので意外と使用頻度は多いです。もちろん最初から区切り文字が入らないようにしておけば良いのですが、既存のシステムの改修などの案件だと土台を修正するのが難しい場合があります。

そこで別に関数を用意して最後の区切り文字を取り除くのです。以上配列の最後の要素や文字に対する処理方法を紹介してきました。文字列、要素操作はあまり面白くないかもしれませんが、業務系のシステムやWebサービスを作るなら必要な知識です。

人気記事

編集部おすすめ記事

この記事を読んだ人はこんな記事を読んでいます

案件探しやフリーランスになるための相談する