PHP: лучше конкатенировать на 1 строке или нескольких строках? Или есть ли различие?

Попробуйте использовать дополнительный массив, в котором укажите, что вы ищете. Например:

String [] cr = {"C", "A", "B"};
for(Product product : productList){
    for (String pr : cr)
        if(product.getName().equals(pr)){
            add = product.getName() + product.getDob();
       }
    }

В этом случае вам нужен только один цикл для проверки вашего списка товаров.

10
задан Paul Dixon 10 January 2009 в 22:32
поделиться

8 ответов

Существует небольшая разница при повторении строки.

echo $var1,$var2,$var3 // comma (echo with multiple arguments)

немного быстрее, чем

echo $var1.$var2.$var3 // dot   (concat and echo)
7
ответ дан 3 December 2019 в 13:47
поделиться

Не будет иметь значения. Оба - конкатенация, таким образом независимо от того, что является самым легким считать, то, что необходимо использовать.

Если Вы после лучшего выполнения, попытайтесь использовать массив и затем интегрируйте его, когда Вы закончили.

$var = array();
$var[] = "line 1\n";
$var[] = "line 2\n";
$var[] = "line 3";
$var = implode('', $var);

Любым путем Вы делаете это, различие в скорости будет незначительно, если Вы не будете работать с тысячами больших строк.

3
ответ дан 3 December 2019 в 13:47
поделиться

Я не думаю, что Вы заметите для такой короткой ситуации. Я обычно решаю по причинам удобочитаемости, которые я собираюсь использовать. Я только разделил на двух ситуациях, иначе на одной строке:

a) Создание многострочного ответа так код несколько подражает тому, что будет видеть пользователь. Я нашел, что это помогает найти опечатки и путает этот путь.

$var  = "line 1 \n";
$var .= "line 2 \n";

b) длина строки. Если строка переполнит моего окна, я буду обычно разбивать его так, я не должен идти в конец строки для чтения конца. Большинство языков поддерживает символ продолжения строки, таким образом, я не должен действительно повреждать его физически в коде, но просто привычке, которую я имею, так как я действительно работаю на некоторых языках, которые не имеют его.

0
ответ дан 3 December 2019 в 13:47
поделиться

Это не имеет значения для некоторых, коротких, строки. Используйте то, что более ясно читать.

Но если у Вас есть многие из них (скажите, что тысячи) не так короткие, Вы, вероятно, захотите сохранить их в массиве и присоединиться к ним вместе. (Как это происходит, такой код часто столь же легко прочитать как конкатенация строкового использования ". =", таким образом, Вы не жертвуете ясностью в алтаре производительности.)

Править: Я не думаю, что мой выше взглядов допустим. Строки PHP изменяемы, правильно?

6
ответ дан 3 December 2019 в 13:47
поделиться

И PEZ и Topbit корректны. Я просто хочу указать на что-то, что я думаю взгляды лучше, чем было замечено здесь:

$var  = "line 1 \n";
$var .= "line 2 \n";

по сравнению с

$var = "line 1 \n"
     . "line 2 \n";

Я очень предпочитаю второй первому как визуально, очевидно, что Вашим результатом является один строковый $var. Это также предотвращает глупые ошибки как:

$var  = "line 1 \n";
$var .= "line 2 \n";
$vat .= "line 3 \n";
$var .= "line 4 \n";
23
ответ дан 3 December 2019 в 13:47
поделиться

Для чего-либо Вы конкатенируете вручную в коде, производительность, вероятно, не имеет значения, таким образом, удобочитаемость является королем. Для меня это часто означает использовать heredoc синтаксис. Мне не нравится способ, которым это повреждает мою структуру добавления отступа, но особенно хорошо, когда Вы хотите разрывы строки и/или вкладки, вставленные правильно в Ваши строки.

2
ответ дан 3 December 2019 в 13:47
поделиться

Самый быстрый способ получить большой объем данных в единственную строку, производится, буферизуя для получения вывода echo'd.

ob_start();
/* many echos. For example, in a loop */
$outString = ob_get_contents(); // get the complete string
ob_end_clean();

В целом это вряд ли будет иметь значительное значение к скорости Вашей программы, поэтому заставьте его выглядеть очевидным, что Вы делаете, так как необходимо возвратиться для фиксирования/обновления его позже во всяком случае. Удобочитаемость является королем.

0
ответ дан 3 December 2019 в 13:47
поделиться

Нет никакого значимого различия. Это - просто вопрос кодирования предпочтения.

0
ответ дан 3 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: