Treating Strings as Arrays Causes Errors

PHP 5 complains louder than PHP 4 when you treat a string as an array.

Accessing a multidimensional array element causes a fatal error in PHP 5:

$string = 'string';
print $string[0][0];
PHP Fatal error:  Cannot use string offset as an array

You can still access an individual character in a string using array notation, but as of PHP 4, this is deprecated in favor of curly braces ({ }):

$string = 'string';

// valid, but deprecated
for ($i = 0; $i < strlen($string); $i++) {
    print $string[$i];
}

// valid, and preferred
for ($i = 0; $i < strlen($string); $i++) {
    print $string{$i};
}
string
            string

Passing strings to array_merge( ) and other array functions generates a warning in PHP 5:

$string = "string";
$array = array_merge($string, $string);
PHP Warning:  array_merge( ): Argument #1 is not an array
            PHP Warning:  array_merge( ): Argument #2 is not an array

This does not generate any messages in PHP 4.

Get Upgrading to PHP 5 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.