In PHP you can access characters of strings in a few different ways, one of which is substr(). You can also access the Nth character in a string with curly or square braces, like so:
$string = 'hello';
echo $string{0}; // h
echo $string[0]; // h
My question is, is there a benefit of one over the other? What’s the difference between {} and []?
Thanks.
use $string[0]
, the other method (braces) is being deprecated in PHP6 (src)
Note: Strings may also be accessed using braces, as in $str{42}, for the same purpose. However, this syntax is deprecated as of PHP 6. Use square brackets instead.
Answer:
There is no difference. Owen’s answer is outdated, the latest version of PHP Manual no longer states that it is deprecated §:
Characters within strings may be accessed and modified by specifying
the zero-based offset of the desired character after the string using
square array brackets, as in$str[42]
. Think of a string as an array
of characters for this purpose. […]Note: Strings may also be accessed using braces, as in
$str{42}
, for
the same purpose.
However it seems that more people/projects use []
, and that many people don’t even know {}
is possible. If you need to share your code publicly or with people who don’t know the curly brace syntax, it may be beneficial to use []
.
UPDATED : accessing string characters with {}
is deprecated, use []
instead.
Answer:
Yes, there’s no difference. This language quirk has some history…
Originally, the curly brace syntax was intended to replace the square bracket syntax which was going to be deprecated:
Later that policy was reversed, and the square brackets syntax was preferred instead:
and even later, the curly braces one was going to be deprecated:
As of this writing, it seems that the deprecation has been withdrawn as well and they are just considered two alternative syntaxes: