📌

文字を一文字ずつ配列に入れたい場合はstr_split だ!!

2022/10/03に公開

この記事でわかること

  1. 連続する文字を区切りたい場合はstr_split関数
    a. 文字列を一文字ずつに区切って配列に入れ直す
    b. 配列の要素を一つずつ出力する
    c. 出力の間に"・"も出力して、最後は"・"を出力しない

1. 連続する文字を区切りたい場合はstr_split関数

あーーー。
なんか、"GONCHAN" をG・O・N・C・H・A・N
ってめっちゃ表示したい気分!!

$str = "GONCHAN";

これを解決するには
a. 文字列を一文字ずつに区切って配列に入れ直す
b. 配列の要素を一つずつ出力する
c. 出力の間に"・"も出力して、最後は"・"を出力しない

こんな方法でやってみようかな

なんか、文字を小分けにする方法は
str_split
が使えるみたいなので、これをつかってみようかな

公式ドキュメント

a. 文字列を一文字ずつに区切って配列に入れ直す

$str = "GONCHAN";
$arr1 = str_split($str);
echo var_dump($arr1);

//出力
array(7) {
  [0]=>
  string(1) "G"
  [1]=>
  string(1) "O"
  [2]=>
  string(1) "N"
  [3]=>
  string(1) "C"
  [4]=>
  string(1) "H"
  [5]=>
  string(1) "A"
  [6]=>
  string(1) "N"
}

①文字列を一文字ずつに区切って配列に入れ直す
を入ってるな

b. 配列の要素を一つずつ出力する

$str = "GONCHAN";
$arr1 = str_split($str);

//改行せずに出力する場合
foreach($arr1 as $output){
    echo $output;
}
//出力
GONCHAN

これだと横並びになって、
本当に一文字ずつ表示してるのかが分かりにくいですね。。。

改行してみてみよう!!

$str = "GONCHAN";
$arr1 = str_split($str);

//改行して出力する場合
foreach($arr1 as $output){
    echo $output."\n";
}

//出力
G
O
N
C
H
A
N

お!!
ひとつずつ出力できているな!!
もう一息だな😄

c. 出力の間に"・"も出力して、最後は"・"を出力しない

$str = "GONCHAN";
$arr1 = str_split($str);
$count = count($arr1);     //追記
$i = 0;    //追記

foreach($arr1 as $output){
        
    /*
     * if文を追加し、最後の文字かどうかで出力結果を変える
     * $count int GONCHANが入っている$arr1の要素数
     * $i int 配列の要素数と比較し,if文によって、最後の文字の場合は"・"を出力させない     
     */
    $i++;
    if($i<$count){
        echo $output."・";
    }elseif($i==$count){
        echo $output;
    }
}


//出力
G・O・N・C・H・A・N

やっとできた!!!
これで完成!!!

Discussion