・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2022年7月15日に投稿されました。)
PHPで文字列を配列に変換するには、str_split()を使用します。
str_split()とは指定した文字列を分割し、配列に変換する関数となります。
こちらの関数は文字列を配列に変換することから、配列を返り値として返すようになります。
そして、str_split()は基本的に1文字ずつ文字列を分割しますが、第2パラメータを指定することで、分割する文字列の長さを指定して配列に変換することができます。
しかし、str_split()で全角文字を分割すると、分割する文字列の長さによって文字化けが発生してしまうので注意が必要です。
そのため、半角文字列の場合はstr_split()を使用し、全角や半角が混合した文字列の場合はmb_str_split()を使用してください。
今回はPHPのstr_split()で文字列を分割して配列に変換する方法について紹介していきます。
str_split()とは
str_split()とは、指定した文字列を分割し、配列に変換する関数となります。
例えば、「abcdef」という文字列に対してstr_split()使用すると「[a,b,c,d,e,f]」のように、指定した文字列を配列として返すようになります。
str_split()の書き方
str_split()は下記のように記述します。
1 | <?php str_split('配列にする文字列' [, '分割する部分の長さ']); ?> |
str_split()は1つのパラメータを指定することで、使用することができます。
そして、最大で2つのパラメータを指定することができます。
str_split()のパラメータ
str_split()のパラメータは下記のようになります。
- 配列にする文字列(必須):
配列にしたい文字列を指定する - 分割する部分の長さ(任意):
分割する要素の長さを指定する
str_split()は必須なパラメータとして、「配列にする文字列」を指定します。
そして任意なパラメータとして、「分割する部分の長さ」を指定することができます。
str_split()で文字列を配列に変換するサンプルコード
str_split()で文字列を配列に変換するサンプルコードをご紹介します。
ここでは、下記の3つの場合でstr_split()を使用します。
- 配列にする文字列がstring型である場合
- 配列にする文字列がint型である場合
- 配列にする文字列がfloat型である場合
配列に変換する文字列がstring型である場合
配列に変換する文字列がstring型である場合にstr_split()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の文字列'; $text1 = 'split'; echo $text1; echo '⚫︎str_split()使用後'; $text1_spt = str_split($text1); var_dump($text1_spt); ?> |
実行結果
指定した文字列が1文字ずつ要素になって、配列に変換されています。
そのため、「split」が配列になって表示されてます。
配列にする文字列がint型である場合
配列にする文字列がint型である場合に、str_split()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の文字列'; $text2 = 123456789; echo $text2; echo '⚫︎str_split()使用後'; $text2_spt = str_split($text2); var_dump($text2_spt); ?> |
実行結果
配列に変換する文字列がint型の場合は、1文字ずつ要素になって配列に変換されます。
そのため、「123456789」が配列になって表示されてます。
配列に変換する文字列がfloat型である場合
配列に変換する文字列がfloat型である場合に、str_split()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の文字列'; $text3 = 3.1415926; echo $text3; echo '⚫︎str_split()使用後'; $text3_spt = str_split($text3); var_dump($text3_spt); ?> |
実行結果
配列に変換する文字列がfloat型の場合は、1文字ずつ要素になって配列に変換されます。
そのため、「3.1415926」が配列になって表示されてます。
str_split()に分割する部分の長さを指定して文字列を配列に変換するサンプルコード
str_split()の分割する部分の長さを指定して文字列を配列に変換するサンプルコードをご紹介します。
ここでは、下記の3つの場合でstr_split()を使用します。
- 分割する部分の長さに正の数を指定した場合
- 分割する部分の長さに負の数を指定した場合
- 分割する部分の長さに0を指定した場合
分割する部分の長さに正の数を指定した場合
分割する部分の長さに正の数を指定して、str_split()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo '⚫︎ 対象の文字列-1'; $text4_1 = 'circumstance'; echo $text4_1; echo '⚫︎str_split()使用後-1'; $text4_1_spt = str_split($text4_1, 4); var_dump($text4_1_spt); echo '⚫︎ 対象の文字列-2'; $array4_2 = 3.141592653589793238462643; echo $array4_2; echo '⚫︎str_split()使用後-2'; $array4_2_spt = str_split($array4_2, 8.5); var_dump($array4_2_spt); ?> |
実行結果
分割する部分の長さに正の数を指定すると、指定した長さで分割して配列に変換されます。
また、小数を指定すると小数点を切り捨てした長さで分割して配列に変換されます。
そのため、文字列を4文字ずつと8文字ずつで分割し、配列として表示されています。
分割する部分の長さに負の数を指定した場合
分割する部分の長さに負の数を指定して、str_split()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の文字列'; $text5 = 'circumstance'; echo $text5; echo '⚫︎ str_split()使用後'; $text5_spt = str_split($text5, -2); var_dump($text5_spt); ?> |
実行結果
分割する部分の長さに負の数を指定すると、エラーが発生します。
分割する部分の長さに0を指定した場合
分割する部分の長さに0を指定して、str_split()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の文字列'; $text6 = 'circumstance'; echo $text6; echo '⚫︎ str_split()使用後'; $text6_spt = str_split($text6, 0); var_dump($text6_spt); ?> |
実行結果
分割する部分の長さに0を指定しても、エラーが発生します。
str_split()で全角文字列を配列に変換する場合
全角文字列を配列に変換する場合に、str_split()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php echo '⚫︎ 対象の文字列'; $text7 = '国会議事堂'; echo $text7; echo '⚫︎ mb_str_split()使用後-1'; $text7_spt1 = str_split($text7); var_dump($text7_spt1); echo '⚫︎ mb_str_split()使用後-2'; $text7_spt2 = str_split($text7, 3); var_dump($text7_spt2); ?> |
実行結果
str_split()に全角文字列を配列に変換すると文字化けが発生します。
しかし、全角文字は1文字3バイトになるので、分割する部分の長さを3の倍数で指定すると文字化けしないで配列に変換することができます。
全角文字は、「文字数 × 3」に指定すると文字化けしないで分割できますが、半角と混ざった文字列では対応が難しくなります。
マルチバイト文字列を配列に変換する場合
マルチバイト文字列を配列に変換する場合は、mb_str_split()を使用します。
mb_str_split()はstr_split()と同じで、文字列を配列に分割する関数となりますが、マルチバイト文字列に対応しています。
そのため、半角や全角文字であったとしてもそれぞれ1文字として配列に分割することが可能になります。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo '⚫︎ 対象の文字列-1'; $text8_1 = '文字列を配列に変換'; echo $text8_1; echo '⚫︎ mb_str_split()使用後-1'; $text8_1_spt = mb_str_split($text8_1); var_dump($text8_1_spt); echo '⚫︎ 対象の文字列-2'; $text8_2 = 'この文字列を配列にchange'; echo $text8_2; echo '⚫︎ mb_str_split()使用後-2'; $text8_2_spt = mb_str_split($text8_2, 4); var_dump($text8_2_spt); ?> |
実行結果
mb_str_split()によって、マルチバイト文字列を配列に変換することができます。
そのため、半角全角が混合した文字列でも文字化けすることなく配列に変換されています。
まとめ
⚫︎ str_split()とは指定した文字列を配列に変換する関数である
⚫︎ array_rand()は最大で2つのパラメータを指定することができる
・ 配列にする文字列(必須)
・ 分割する部分の長さ(任意)
⚫︎ str_split()は文字列がstring型はもちろんint型、float型であっても、配列に変換することができる
⚫︎ 分割する部分の長さに正の整数を指定してstr_split()を使用すると、指定した長さで分割して配列に変換する
⚫︎ 分割する部分の長さに負の整数を指定してstr_split()を使用すると、エラーが発生する
⚫︎ 分割する部分の長さに0を指定してstr_split()を使用すると、エラーが発生する
⚫︎ str_split()に全角文字列を配列に変換すると文字化けが発生する
(しかし、分割する部分の長さを3の倍数で指定すると文字化けは発生しない)
⚫︎ マルチバイト文字列を配列に変換する場合は、mb_str_split()を使用する