Строка конкатенации против массива imode в PHP

Я долго использовал Java в качестве стандартного метода для создания длинных строк по частям, чтобы добавить элементы в массив, а затем взорвать массив.

$out[] = 'a'; $out[] = 'b'; echo implode('', $out); 

Но потом с большим количеством данных.

Альтернативой (стандартным PHP) является использование конкатенации строк.

 $out = 'a'; $out .= 'b'; echo $out; 

К моему удивлению, между обоими методами не существует разницы в скорости. Когда существует значительная разница во времени, обычно это конкатенация, которая кажется более быстрой, но не все время.

Поэтому мой вопрос: есть ли помимо стиля и читаемости кода любые другие причины выбора одного подхода над другим?

Для меня использование массива подразумевает, что вы собираетесь делать то, что не может быть сделано с помощью простой конкатенации строк. Как сортировка, проверка уникальности и т. Д. Если вы не делаете ничего подобного, то конкатенация строк будет легче читать через год или два тем, кто не знает код. Им не нужно будет задаваться вопросом, будет ли массив управляться до того, как он будет взорван.

Тем не менее, я использую подход с иммобилизованным массивом, когда мне нужно создать строку с запятыми или «и» между словами.

Выберите более читаемый. Всегда. В этом случае я подберу второе приложение. Затем оптимизируйте его, если это узкое место.

Одна (тонкая) разница четко видна при создании строки, разделенной символами:

 <?php $out[] = 'a'; $out[] = 'b'; echo implode(',', $out); foreach($out as $o) { echo $o . ','; } ?> 

Первый напечатает a,b где последний напечатает a,b, Поэтому, если вы не используете пустую строку в качестве разделителя, как это было в вашем примере, обычно используется implode() .

Священная война конкатенации – против разрушения: Нет, нет никакой разницы.

это зависит от того, что вы хотите сделать с строкой / массивом и как вы его создаете

если вы начинаете с массива и должны сортировать его / манипулировать определенными элементами, то я предлагаю implode

кроме этого я обычно использую конкатенацию