phpstringconcatenation

php String Concatenation, Performance


In languages like Java and C#, strings are immutable and it can be computationally expensive to build a string one character at a time. In said languages, there are library classes to reduce this cost such as C# System.Text.StringBuilder and Java java.lang.StringBuilder.

Does php (4 or 5; I'm interested in both) share this limitation? If so, are there similar solutions to the problem available?


Solution

  • No, there is no type of stringbuilder class in PHP, since strings are mutable.

    That being said, there are different ways of building a string, depending on what you're doing.

    echo, for example, will accept comma-separated tokens for output.

    // This...
    echo 'one', 'two';
    
    // Is the same as this
    echo 'one';
    echo 'two';
    

    What this means is that you can output a complex string without actually using concatenation, which would be slower

    // This...
    echo 'one', 'two';
    
    // Is faster than this...
    echo 'one' . 'two';
    

    If you need to capture this output in a variable, you can do that with the output buffering functions.

    Also, PHP's array performance is really good. If you want to do something like a comma-separated list of values, just use implode()

    $values = array( 'one', 'two', 'three' );
    $valueList = implode( ', ', $values );
    

    Lastly, make sure you familiarize yourself with PHP's string type and it's different delimiters, and the implications of each.