【PHP8.x】str_repeat関数の使い方

str_repeat関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

str_repeat関数は、指定した文字列を、指定した回数だけ繰り返した新しい文字列を生成する処理を実行する関数です。レポートの区切り線を作成したり、テキストを特定の形式で整形したりする際に便利に利用できます。この関数は2つの引数を取ります。第一引数には繰り返したい文字列を、第二引数にはその文字列を繰り返す回数を0以上の整数で指定します。例えば、str_repeat("=", 15) を実行すると、15個の等号記号が連結された文字列「===============」が返されます。第二引数に0を指定した場合は、何も繰り返されないため、空の文字列が返されます。PHP 8.0以降のバージョンでは、第二引数に負の数を指定すると ValueError という例外が発生し、プログラムの実行が停止する原因となります。そのため、繰り返し回数として渡す値が負の数にならないように注意して使用する必要があります。

構文(syntax)

1<?php
2echo str_repeat("PHP", 3);
3?>

引数(parameters)

string $string, int $times

  • string $string: 繰り返し対象の文字列
  • int $times: $stringを繰り返す回数

戻り値(return)

string

指定された文字列を指定された回数だけ繰り返した新しい文字列を返します。

サンプルコード

PHP str_repeat関数で文字列を繰り返す

1<?php
2
3// str_repeat関数の基本的な使い方を示すサンプルコード
4
5/**
6 * str_repeat関数は、指定した文字列を複数回繰り返して新しい文字列を生成します。
7 *
8 * str_repeat(string $string, int $times): string
9 * $string: 繰り返したい文字列
10 * $times: 文字列を繰り返す回数(非負の整数)
11 */
12
13// 例1: 簡単な文字列を繰り返す
14$originalString1 = "Hello";
15$repeatCount1 = 3;
16$repeatedString1 = str_repeat($originalString1, $repeatCount1);
17echo "例1: \"{$originalString1}\" を {$repeatCount1} 回繰り返すと: {$repeatedString1}\n"; // 出力: HelloHelloHello
18
19// 例2: スペースを含む文字列を繰り返す
20$originalString2 = "PHP ";
21$repeatCount2 = 5;
22$repeatedString2 = str_repeat($originalString2, $repeatCount2);
23echo "例2: \"{$originalString2}\" を {$repeatCount2} 回繰り返すと: {$repeatedString2}\n"; // 出力: PHP PHP PHP PHP PHP 
24
25// 例3: 区切り線のような短い文字列を多く繰り返す
26$originalString3 = "-";
27$repeatCount3 = 20;
28$repeatedString3 = str_repeat($originalString3, $repeatCount3);
29echo "例3: \"{$originalString3}\" を {$repeatCount3} 回繰り返すと: {$repeatedString3}\n"; // 出力: --------------------
30
31// 例4: 繰り返し回数が0の場合、空の文字列が返されます
32$originalString4 = "Test";
33$repeatCount4 = 0;
34$repeatedString4 = str_repeat($originalString4, $repeatCount4);
35echo "例4: \"{$originalString4}\" を {$repeatCount4} 回繰り返すと: \"{$repeatedString4}\" (空文字列)\n"; // 出力: "" (空文字列)
36
37?>

str_repeat関数は、指定した文字列を、指定した回数だけ繰り返して連結し、新しい文字列を生成するためのPHP関数です。この関数は2つの引数を取ります。第一引数には繰り返しの元となる文字列を指定し、第二引数にはその文字列を何回繰り返すかを0以上の整数で指定します。関数の戻り値は、指定回数分繰り返された結果の文字列です。

サンプルコードでは、いくつかの具体的な使用例が示されています。例1では「Hello」を3回繰り返し、「HelloHelloHello」という文字列を得ています。例2のようにスペースを含む文字列を繰り返すこともできます。また、例3ではハイフン「-」を多数繰り返して区切り線を作成しており、テキストの整形などに役立ちます。

特に注意すべき点として、例4のように繰り返し回数に0を指定した場合は、何も繰り返されないため、結果として空の文字列が返されます。このようにstr_repeat関数は、決まったパターンの文字列をプログラムで簡単に生成したい場合に非常に便利な関数です。

str_repeat関数を使う際の最も重要な注意点は、2番目の引数である繰り返し回数です。ここには必ず0以上の整数を指定してください。もし負の数を指定すると、エラーが発生してプログラムが停止する原因となります。特に、ユーザーからの入力値を繰り返し回数として使用する場合は注意が必要です。予期しないエラーや、非常に大きな回数によるメモリの大量消費を防ぐため、値が0以上であることや、上限を超えていないかを事前にチェックする処理が不可欠です。なお、繰り返し回数に0を指定した場合は、サンプルコードの通り空の文字列が返されますが、これはエラーではなく正常な動作です。

PHP str_repeatでスペースを繰り返す

1<?php
2
3/**
4 * 指定された回数だけ半角スペースを繰り返し、テキストの前にインデントとして追加します。
5 *
6 * この関数は、リストやコードブロックのような階層構造を持つテキストを
7 * 整形して表示する際に便利です。
8 *
9 * @param string $text   インデントを付けたいテキスト。
10 * @param int    $level  インデントの深さ(スペースの数)。
11 * @return string インデントが追加されたテキスト。
12 */
13function createIndentedText(string $text, int $level): string
14{
15    // str_repeat() を使用して、半角スペース(' ')を $level 回繰り返す。
16    // 繰り返す回数として0を指定した場合、空文字列が返されます。
17    $indentation = str_repeat(' ', $level);
18
19    // 生成されたインデント(スペース文字列)と元のテキストを連結して返す。
20    return $indentation . $text;
21}
22
23// --- 関数の使用例 ---
24
25// インデントレベルが異なるテキストを生成して表示します。
26echo createIndentedText('Top level item.', 0) . PHP_EOL;
27echo createIndentedText('Second level item.', 4) . PHP_EOL;
28echo createIndentedText('Third level item.', 8) . PHP_EOL;
29
30/*
31--- 実行結果 ---
32
33Top level item.
34    Second level item.
35        Third level item.
36
37*/
38

PHPのstr_repeat関数は、指定した文字列を、指定した回数だけ繰り返した新しい文字列を生成する関数です。

この関数は2つの引数を取ります。第1引数には、繰り返したい文字列を指定します。サンプルコードでは、インデントを作成するために半角スペース(' ')が指定されています。第2引数には、その文字列を何回繰り返すかを整数で指定します。もし、この繰り返す回数として0を指定した場合は、何も繰り返されないため、空の文字列が返されます。関数の戻り値は、第1引数の文字列が第2引数の回数分だけ連結された新しい文字列です。

サンプルコードのcreateIndentedText関数では、このstr_repeat関数を利用して、インデント(字下げ)を実現しています。第2引数で受け取った$levelの数だけ半角スペースを繰り返し、それを元のテキストの前に連結することで、階層構造を持つテキストを整形しています。実行結果からも、$levelの数値が大きくなるにつれて、行頭のスペースが増えていることが確認できます。このようにstr_repeatは、テキストのフォーマットを整える際などに非常に便利な関数です。

str_repeat関数を利用する際は、第2引数に指定する繰り返しの回数に注意が必要です。0を指定した場合は意図通り空の文字列が返りますが、負の数を指定するとエラーが発生しプログラムが停止してしまいます。ユーザーの入力値などを引数として渡す場合は、値が0以上であることを事前に確認する処理を必ず実装してください。また、非常に大きな数値を指定すると、大量のメモリを消費してシステムのパフォーマンスに影響を与える可能性があります。そのため、想定外に大きな値が渡されないように、プログラム側で上限値を設けるなどの対策も重要です。インデントには、半角スペースだけでなくタブ文字(\t)も同様に使用できます。

関連コンテンツ