2009-06-24 2 views
0

, у которого один из 2 имеет лучшую производительность?

В javascript я слышал, что douglas crockford говорит, что вы не должны использовать str + =, если вы объединяете большую строку, но вместо этого используете array.push.

Я видел много кода, в котором разработчики используют $ str. = Для конкатенации большой строки в PHP, но так как «все» в PHP основано на массивах (попробуйте сбросить объект), я думал, что то же правило применяется для PHP.

Можно ли подтвердить это?

+2

"все" на самом деле не массив основан на PHP. Они просто используют тот же формат для var_dump() и print_r(), передаете ли вы массив или объект. –

ответ

5

Строки изменяются в PHP, поэтому использование. = Не имеет такого же влияния на php, как и использование = = в javascript. То есть, вы не будете иметь две разные строки при каждом использовании оператора.

См:

php String Concatenation, Performance Are php strings immutable?

1

array_push() не будет работать для добавления к строке в PHP, потому что строки PHP не являются действительно массивами (например, вы увидите их на C или JavaScript).

+0

это требует согласования ('', array), но вы можете сделать следующее просто: $ arr = array(); array_push ($ arr, "hello"); array_push ($ arr, "world"); echo join ('', $ arr); и он даст вам строку, подобную этой «hello world». –

3

.= предназначено для строк.

array_push() предназначен для массивов.

Это не то же самое в PHP. Использование одного на другом вызовет ошибку.

+0

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