Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessing characters in a string using array syntax

Tags:

string

php

Suppose we have this code$test = 'text';. What's the difference between echo $test[0] and echo $test{0}? The result is the same.

Is it a good practice to treat a variable which contains a string like a array of character?

like image 511
Cristian Avatar asked Jan 19 '13 22:01

Cristian


2 Answers

Okay, I'll aggregate my comments as an answer:

To quote the manual

Strings may also be accessed using braces, as in $str{42}, for the same purpose. However, this syntax is deprecated as of PHP 7 . Use square brackets instead.

Also, albeit undocumented, the {} accessor also works for arrays, which makes $foo{$bar} and $foo[$bar] completely equivalent. It's just old syntax for the convenience of Perl programmers.

Concerning your second question, if it is good practice to treat strings like an array of characters: Yes, if it is useful for your task, do it. In low level languages like C, strings are arrays of characters, so it is quite natural to treat them like that.

BUT keep in mind that PHP has bad unicode support. So if your string is in multi-byte encoding (ie UTF-8), this might not work as expected. Better use the multibyte functions in that case.

like image 146
Fabian Schmengler Avatar answered Nov 05 '22 18:11

Fabian Schmengler


https://www.php.net/manual/en/language.types.string.php

Accessing characters within string literals using the {} syntax has been deprecated in PHP 7.4. This has been removed in PHP 8.0.

So, always use square brackets $str[0].

like image 43
raveren Avatar answered Nov 05 '22 16:11

raveren