【PHP】strrev()で文字列を逆順に並び替える!

(この記事は2022年6月23日に投稿されました。)

PHPで文字列を逆順に並び替える関数として、strrev()があります。

strrev()とは指定した文字列の順番を逆にして返す関数となります。

例えば、「abcde」という文字列にstrrev()を使用すると、「edcba」が返されます。

しかし、全角の文字列は対応しておらず、もし指定すると、文字化けを起こしてしまいます。

また、int型の文字列を指定した場合でも、逆順に並び替えることができますが、string型になって返ってきますので注意が必要です。

そして、strrev()はパラメータとして文字列を指定するので、文字列はもちろん、配列の値を指定することも可能です。

今回はPHPのstrrev()で文字列を逆順に並び替える方法について紹介していきます。

この記事はこんな方におすすめ
・PHPのstrrev()を使って文字列の順番を逆にして表示したい人




strrev()とは

strrev()とは、文字列を逆順に並び替える関数になります。

例えば、「1234」という文字列にstrrev()を使用すると、「4321」という文字列を返すようになります。

strrev()の書き方

strrev()の書き方は下記のようになります。

strrev()はパラメータを一つ指定することで使用することができます。

strrev()のパラメータ

strrev()のパラメータは下記のようになります。

  1. 逆順にしたい文字列(必須):
    逆に並び替えたい文字列を指定する

strrev()はパラメータとして「逆順にしたい文字列」を指定することで使用することができます。

strrev()で文字列を逆順に並び替えるサンプルコード

strrev()で文字列を逆順に並び替えるサンプルコードについてご紹介します。

ここでは下記の3つの場合でstrrev()を使用してみます。

  1. 逆順に並び替える文字列がstring型である場合
  2. 逆順に並び替える文字列がint型である場合
  3. 逆順に並び替える文字列が日本語である場合

逆順に並び替える文字列がstring型である場合

逆順に並び替える文字列がstring型である場合にstrrev()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

strrev()によって指定したstring型が逆順に並び替えて表示されています。

そのため、「Hello Japan! 12345678910」が逆順に並び替えられています。

しかし、全角の文字列の場合は、対応しておらず文字化けが発生しています。

逆順に並び替える文字列がint型である場合

逆順に並び替える文字列がint型である場合にstrrev()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

strrev()によって指定したint型が逆順に並び替えて表示されています。

そのため、「12345678910」が逆順に並び替えられています。

しかし、string型として返されるようになります。

逆順に並び替える文字列が日本語である場合

逆順に並び替える文字列が日本語である場合にstrrev()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

逆順に並び替える文字列に日本語を使用した場合は、対応していないため文字化けが発生しています。

strrev()で配列の値を逆順に並び替えるサンプルコード

strrev()で配列の値を逆順に並び替えるサンプルコードをご紹介します。

ここでは下記の2つの場合でstrrev()を使用してみます。

  1. 指定した配列の値を逆順に並び替える場合
  2. 指定した連動配列の値を逆順に並び替える場合

指定した配列の値を逆順に並び替える場合

指定した配列の値を逆順に並び替える場合にstrrev()を使用してみます。

ここでは、1次元配列と2次元配列の値を逆順に並び替えてみます。

⚫︎ index.php

⚫︎ 実行結果

指定した連想配列の値を逆順に並び替える場合

指定した連組配列の値にstrrev()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

全角の文字列を逆順に並び替えたい場合

strrev()は全角文字には対応しておらず、仮に使用すると文字化けが起こってしまいます。

そのため、全角の文字列を逆順に並び替えるには、オリジナルの関数を作成する必要があります。

そのオリジナルの関数とは下記のようなコードになります。

⚫︎ 実行結果

オリジナルの関数を作成し、使用することで、全角の文字列を逆順に並び替えています。

また、コードの解説は下記のようになります。

オリジナル関数の解説
  1. mb_substr()で対象文字列の文字を1つずつ切り取る
  2. 切り取った文字をarray_push()で配列に追加していく
  3. 1と2の処理を文字列の文字数分行う
  4. 配列に追加されたら、array_reverse()で値の順番を入れ替える
  5. 順番を入れ替えたら、implode()で配列に値を文字列にして表示する

strrev()で逆順に並び替えた文字列を元に戻す場合

strrev()で逆順に並び替えた文字列を元に戻すには、再びstrrev()を使用します。

⚫︎ index.php

⚫︎ 実行結果

strrev()で逆順に並び替えた文字列に対してもう一度、strrev()を使用することで、元に戻っていることが分かります。

そのため、逆順に並び替えられた「nevertheless」が元に戻っています。

まとめ

⚫︎ strrev()とは指定した文字列を逆順に並び替える関数である

⚫︎ strrev()を使用するには1つのパラメータが必須となる
・ 逆順にしたい文字列(必須)

⚫︎ strrev()にstring型の文字列を指定すると、文字列を逆順にして返す

⚫︎ strrev()にint型の文字列を指定すると、文字列を逆順にして返すが、string型になる

⚫︎ strrev()は日本語の文字列を指定すると文字化けする
(日本語は対応していない)

⚫︎ strrev()はパラメータとして配列の値を指定することができる
(普通の配列や連想配列でも可能)

⚫︎ strrev()は全角文字列を逆順に並び替えることができない
(全角文字列を逆順に並び替えたいなら、オリジナルの関数を作成する必要がある)

⚫︎ strrev()で逆順に並び替えた文字列を元に戻すには、再びstrrev()を使用する

コメントを残す

メールアドレスが公開されることはありません。