Преобразовать массив в цикле for в строку

#php #arrays #string

#php #массивы #строка

Вопрос:

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

    $a="hi";

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

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

Спасибо.

Ответ №1:

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

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

Приведенный выше код выведет «hihihi».

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

Ответ №2:

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

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

 $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"
  

Ответ №3:

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

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

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

 $array = array ( 'hi', 'bye', '!!!' );
$b = implode('', $array); // hibye!!!
  

Ответ №4:

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

 $b = str_repeat($a, 3);
  

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

Ответ №5:

 <?php
function stringdoubler($string, $duplicates) {
  if ($duplicates > 1)
    $string = $string . stringdoubler($string, $duplicates-1);
  return $string;
}

echo stringdoubler("hi",3);

?>
  

Комментарии:

1. Рекурсивная функция для такого рода задач? Вы серьезно?

2. Это извращенное безумие распечатывается и размещается на моей «стене чрезмерной инженерии».

3. Рекурсия не сложна 🙂