10

PHPの文字列は.....文字列であることは知っていますが、たとえば次のことができます

$str = 'String';
echo $str[0];
echo $str[1];

//result
S
t

echo count($str)
//result
1

配列のようにそれらを通り抜けることができるのに、count で数えることができないのはなぜですか? ( strlen() を使用できることは知っています)

4

2 に答える 2

22

それがその仕組みだからです。ブラケット表記を使用して、特定のバイト オフセットにアクセスできます。しかし、それは文字列が配列であり、配列を期待する関数を使用できるという意味ではありません。$string[int]は のシンタックス シュガーでsubstr($string, int, 1)あり、それ以上でもそれ以下でもありません。

于 2013-06-19T14:16:43.773 に答える
7

文字列は配列ではないためです。便宜上、同じ構文を使用して、文字の バイト オフセット(必ずしもマルチバイト文字列の文字であるとは限りません)を見つけることができますが、それだけです。

配列もキーを持つことができ、ソートすることができます。文字列が完全な配列である場合、各文字にキーを与えるか、配列関数の 1 つを使用して文字をアルファベット順に並べ替えることができます。

簡単に言えば、構文のごく一部が似ていても、文字列は配列ではありません。

于 2013-06-19T14:18:16.913 に答える