str_repeat
(PHP 4, PHP 5, PHP 7, PHP 8)
str_repeat — 文字列を反復する
パラメータ
string
-
繰り返す文字列。
times
-
string
を繰り返す回数。times
は 0 以上でなければなりません。times
が 0 に設定された場合、この関数は空文字を返します。
戻り値
繰り返した文字列を返します。
例
例1 str_repeat() の例
<?php
echo str_repeat("-=", 10);
?>
上の例の出力は以下となります。
-=-=-=-=-=-=-=-=-=-=
+add a note
User Contributed Notes 4 notes
Damien Bezborodov ¶
15 years ago
Here is a simple one liner to repeat a string multiple times with a separator:
<?php
implode($separator, array_fill(0, $multiplier, $input));
?>
Example script:
<?php
// How I like to repeat a string using standard PHP functions
$input = 'bar';
$multiplier = 5;
$separator = ',';
print implode($separator, array_fill(0, $multiplier, $input));
print "\n";
// Say, this comes in handy with count() on an array that we want to use in an
// SQL query such as 'WHERE foo IN (...)'
$args = array('1', '2', '3');
print implode(',', array_fill(0, count($args), '?'));
print "\n";
?>
Example Output:
bar,bar,bar,bar,bar
?,?,?
Alexander Ovsiyenko ¶
6 years ago
http://php.net/manual/en/function.str-repeat.php#90555
Damien Bezborodov , yeah but execution time of your solution is 3-5 times worse than str_replace.
<?php
function spam($number) {
return str_repeat('test', $number);
}
function spam2($number) {
return implode('', array_fill(0, $number, 'test'));
}
//echo spam(4);
$before = microtime(true);
for ($i = 0; $i < 100000; $i++) {
spam(10);
}
echo microtime(true) - $before , "\n"; // 0.010297
$before = microtime(true);
for ($i = 0; $i < 100000; $i++) {
spam2(10);
}
echo microtime(true) - $before; // 0.032104
claude dot pache at gmail dot com ¶
15 years ago
Here is a shorter version of Kees van Dieren's function below, which is moreover compatible with the syntax of str_repeat:
<?php
function str_repeat_extended($input, $multiplier, $separator='')
{
return $multiplier==0 ? '' : str_repeat($input.$separator, $multiplier-1).$input;
}
?>
Anonymous ¶
13 years ago
hi guys ,
i've faced this example :
<?php
$my_head = str_repeat("°~", 35);
echo $my_head;
?>
so , the length should be 35x2 = 70 !!!
if we echo it :
<?php
$my_head = str_repeat("°~", 35);
echo strlen($my_head); // 105
echo mb_strlen($my_head, 'UTF-8'); // 70
?>
be carefull with characters and try to use mb_* package to make sure everything goes well ...