Конкатенация строк и массив в PHP - PullRequest
6 голосов
/ 04 декабря 2009

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

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

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

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

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

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

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

Ответы [ 5 ]

8 голосов
/ 04 декабря 2009

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

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

3 голосов
/ 04 декабря 2009

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

2 голосов
/ 04 декабря 2009

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

2 голосов
/ 04 декабря 2009

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

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

foreach($out as $o) {
    echo $o . ',';
}

?>

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

0 голосов
/ 04 декабря 2009

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

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

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

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