・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2022年7月19日に投稿されました。)
PHPで指定した文字列をシャッフルする方法として、str_shuffle()があります。
str_shuffle()とは指定した文字列をシャッフルする関数であり、文字列を指定することでシャッフル後の文字列を返り値として返すようになります。
しかし、全角文字列に使用した場合は文字化を起こしてしまいますので注意してください。
そして、str_shuffle()はint型やfloat型の数値などもシャッフルすることができます。
そのため、指定した文字列をシャッフルして別の文字列として表示したい場合は、str_shuffle()を使用しましょう。
今回はPHPのstr_shuffle()で指定した文字列をシャッフルする方法について紹介していきます。
str_shuffle()とは
str_shuffle()とは指定された文字列内をシャッフルして並べる関数となります。
例えば、「abc」という文字列に対してstr_shuffle()を使用すると「abc, acb, bac, bca, cab, cba」のいずれかがランダムで返り値として返されます。
str_shuffle()の書き方
str_shuffle()の書き方は下記のようになります。
1 | <?php str_shuffle('シャッフルしたい文字列'); ?> |
str_shuffleは、1つのパラメータを指定することで使用することができます。
str_shuffle()のパラメータ
str_shuffle()のパラメータは下記のようになります。
- シャッフルしたい文字列(必須):
シャッフルしたい文字列を指定する
str_shuffle()は、必須パラメータとして「シャッフルしたい文字列」を指定します。
str_shuffle()で指定した文字列をシャッフルするサンプルコード
str_shuffle()で指定した文字列をシャッフルするサンプルコードをご紹介します。
ここでは、下記の3つの場合でstr_shuffle()を使用します。
- 2文字以上の文字列を指定した場合
- 1文字の文字列を指定した場合
- 空の文字列を指定した場合
2文字以上の文字列を指定した場合
2文字以上の文字列を指定した場合に、str_shuffle()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo '⚫︎ 対象の文字列'; $text1_1 = 'abcdefghijk'; echo $text1_1; echo '⚫︎ str_shuffle()使用後-1'; $text1_1_sfl = str_shuffle($text1_1); echo $text1_1_strsfl; echo '⚫︎ 対象の文字列'; $text1_2 = 'ABCDEFGHIJK'; echo $text1_2; echo '⚫︎ str_shuffle()使用後-2'; $text1_2_sfl = str_shuffle($text1_2); echo $text1_2_strsfl; ?> |
実行結果
str_shuffle()によって、指定した文字列がシャッフルされています。
1文字の文字列を指定した場合
1文字の文字列を指定した場合に、str_shuffle()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo '⚫︎ 対象の文字列'; $text2_1 = 'k'; echo $text2_1; echo '⚫︎ str_shuffle()使用後-1'; $text2_1_strsfl = str_shuffle($text2_1); echo $text2_1_strsfl; echo '⚫︎ 対象の文字列'; $text2_2 = 'A'; echo $text2_2; echo '⚫︎ str_shuffle()使用後-2'; $text2_2_strsfl = str_shuffle($text2_2); echo $text2_2_strsfl; ?> |
実行結果
1文字の文字列を指定した場合は、シャッフルされずそのまま表示されるようになります。
空の文字列を指定した場合
空の文字列を指定した場合に、str_shuffle()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の文字列'; $text3 = ''; echo $text3; echo '⚫︎ str_shuffle()使用後'; $text3_strsfl = str_shuffle($text3); echo $text3_strsfl; ?> |
実行結果
空の文字列を指定した場合もシャッフルされずそのまま表示されるようになります。
str_shuffle()のシャッフルしたい文字列に数値を指定した場合
str_shuffle()のシャッフルしたい文字列に数値を指定してみます。
int型の数値を指定した場合
int型の数値を指定した場合に、str_shuffle()を使用してみてみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の数値'; $num1 = 1234567890; var_dump($num1); echo '⚫︎ str_shuffle()使用後'; $num1_strsfl = str_shuffle($num1); var_dump($num1_strsfl); ?> |
実行結果
int型の数値を指定してstr_shuffle()を使用すると、数値がシャッフルされて表示されます。
しかし、str_shuffle()を使用した後はstring型に変換されます。
float型の数値を指定した場合
float型の数値を指定した場合に、str_shuffle()を使用してみてみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo '⚫︎ 対象の数値-1'; $num2 = 123.456789; var_dump($num2); echo '⚫︎ str_shuffle()使用後-1'; $num2_strsfl = str_shuffle($num2); var_dump($num2_strsfl); echo '⚫︎ 対象の数値-2'; $num2 = 0.00010; var_dump($num2); echo '⚫︎ str_shuffle()使用後-2'; $num2_strsfl = str_shuffle($num2); var_dump($num2_strsfl); ?> |
実行結果
float型の数値を指定してstr_shuffle()を使用すると、数値がシャッフルされて表示されます。
しかし、こちらもstr_shuffle()を使用した後はstring型に変換されます。
str_shuffle()のシャッフルしたい文字列に全角文字列を指定した場合
シャッフルしたい文字列に全角文字列を指定してstr_shuffle()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の文字列'; $text4 = 'この文字列をシャッフルする。'; echo $text4; echo '⚫︎ str_shuffle()使用後'; $text4_strsfl = str_shuffle($text4); echo $text4_strsfl; ?> |
実行結果
全角文字列を指定してstr_shuffle()を使用すると、文字化けが発生してしまいます。
str_shuffle()で配列の値をシャッフルするサンプルコード
str_shuffle()で配列の値をシャッフルするサンプルコードをご紹介します、
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php echo '⚫︎ 対象の配列'; $fruits =['orange', 'strawberry', 'grape', 'banana', 'pineapple']; var_dump($fruits); echo '⚫︎ str_shuffle()使用後-1'; $fruits_strsfl1 = str_shuffle($fruits[1]); var_dump($fruits_strsfl1); echo '⚫︎ str_shuffle()使用後-2'; foreach ($fruits as $fruits_val2) { $val2_strsfl2 = str_shuffle($fruits_val2); echo $val2_strsfl2; echo "\n"; } ?> |
実行結果
str_shuffle()で指定した配列の値をシャッフルして表示しています。
また、foreach文を使用することで、全ての配列の値をシャッフルして表示することができます。
もし、要素の位置をシャッフルしたい場合はshuffle()を使用してください。
shuffle()について詳しく知りたい場合は下記の記事をご参考ください。
foreach文について詳しく知りたい場合はは下記の記事をご参考ください。
まとめ
⚫︎ str_shuffle()とは指定された文字列の累乗を計算する関数である
⚫︎ str_shuffle()を使用するには1つのパラメータを指定する
・ シャッフルしたい文字列(必須)
⚫︎ str_shuffle()は2文字以上の文字列を指定すると、指定した文字列がャッフルされて返される
⚫︎ str_shuffle()は1文字の文字列を指定すると、シャッフルされずそのまま返される
⚫︎str_shuffle()は空の文字列を指定すると、シャッフルされずそのまま返される
⚫︎ str_shuffle()のシャッフルしたい文字列に数値を指定すると、数値がシャッフルされて返される
(しかし、string型として返される)
⚫︎ 全角文字列を指定して、str_shuffle()を使用すると文字化けが発生する
⚫︎ 配列の値を指定して、str_shuffle()を使用すると、値がシャッフルされて返される
(全ての配列の値をシャッフルするにはforeach文を使用する)