Конвертировать массив в цикл for в строку - PullRequest
0 голосов
/ 13 ноября 2011

Если у меня есть простой код, подобный этому:

   $a="hi";

   for($i=0;$i<3;$i++)
  {
   echo $a;
  }

так что вывод будет hihihi, возможно ли преобразовать его в строку типа $b="hihihi" без прохождения цикла? Я использую это для другой функции ...

Спасибо.

Ответы [ 5 ]

4 голосов
/ 13 ноября 2011

Вы можете использовать str_repeat($str, $count) для достижения этой цели:

$str = str_repeat("hi", 3);
echo $str;

Приведенный выше код будет печатать "hihihi".

Вот документация для этого: http://www.php.net/manual/en/function.str-repeat.php

2 голосов
/ 13 ноября 2011

Я предполагаю, что ваша ситуация немного сложнее, чем приведенный пример ...

Один из вариантов - не выводить переменные в буфер. Вместо этого добавьте их к своей переменной:

$out = '';
for ($i = 0; $i < 3; ++$i) {
    $out .= 'hi';
}

echo $out; // "hihihi"

Однако, если по какой-либо причине эхо не происходит в коде, которым вы управляете, вы можете использовать буферизацию вывода .

ob_start();
for ($i = 0; $i < 3; ++$i) {
    doSomethingWhichPrintsHi();
}
$out = ob_get_clean();  // "hihihi"
1 голос
/ 13 ноября 2011

Вы можете использовать str_repeat (строка $ input, int $ multiplier) .

$b = str_repeat($a, 3);

Также см. Мой пример .

1 голос
/ 13 ноября 2011

Есть варианты без цикла:

$b = str_repeat('hi', 3); // hihihi

или, если у вас есть массив:

$array = array ( 'hi', 'bye', '!!!' );
$b = implode('', $array); // hibye!!!
0 голосов
/ 13 ноября 2011
<?php
function stringdoubler($string, $duplicates) {
  if ($duplicates > 1)
    $string = $string . stringdoubler($string, $duplicates-1);
  return $string;
}

echo stringdoubler("hi",3);

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...