Каков наилучший способ сложить две строки вместе? - PullRequest
21 голосов
/ 29 марта 2009

Я где-то читал (я думал о codinghorror), что это плохая практика - добавлять строки вместе, как если бы они были числами, поскольку, как и числа, строки нельзя изменить. Таким образом, сложение их вместе создает новую строку. Итак, мне было интересно, как лучше всего сложить две строки вместе, ориентируясь на производительность?

Какой из этих четырех лучше или есть другой способ, который лучше?

//Note that normally at least one of these two strings is variable
$str1 = 'Hello ';
$str2 = 'World!'; 
$output1 = $str1.$str2; //This is said to be bad

$str1 = 'Hello ';
$output2 = $str1.'World!'; //Also bad

$str1 = 'Hello';
$str2 = 'World!';
$output3 = sprintf('%s %s', $str1, $str2); //Good?
//This last one is probaply more common as:
//$output = sprintf('%s %s', 'Hello', 'World!');

$str1 = 'Hello ';
$str2 = '{a}World!';
$output4 = str_replace('{a}', $str1, $str2);

Это вообще имеет значение?

Ответы [ 12 ]

0 голосов
/ 29 марта 2009

Это не решение для 2 строк, но когда вы думаете о том, чтобы объединить больше строк, лучше всего так:

$tmp=srray();
for(;;) $tmp[]='some string';
$str=implode('',$tmp);

Быстрее создать элемент массива и соединить их все сразу, чем сто раз.

0 голосов
/ 29 марта 2009

Советы, которые вы прочитали, могли быть связаны с функцией echo, для которой быстрее использовать запятые, например:

echo $str1, $str2;

Другой подход состоит в том, чтобы создать строку в переменной (например, с помощью оператора.), А затем повторить всю строку в конце.

Вы можете проверить это самостоятельно, используя функцию microtime (вам нужно сделать цикл, который повторяется, например, 1000 или 100 000 раз, чтобы сделать числа значимыми). Но из четырех опубликованных вами, первый, вероятно, будет самым быстрым. Он также наиболее читабелен - остальные не имеют смысла программно.

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