Quelle est la différence entre $ str [n] et $ str {n}, étant donné que $ str est une chaîne.PHP: indexation de chaîne
J'ai remarqué que les deux semblent fonctionner de la même manière, sauf que {} n'apparaît dans aucune documentation trouvée.
Quelle est la différence entre $ str [n] et $ str {n}, étant donné que $ str est une chaîne.PHP: indexation de chaîne
J'ai remarqué que les deux semblent fonctionner de la même manière, sauf que {} n'apparaît dans aucune documentation trouvée.
Ce sont les mêmes. Cependant, ils se débarrassent de la syntaxe {}
, donc vous devriez aller avec []
.
caractères dans les chaînes peuvent être consultées et modifiées en spécifiant le décalage du caractère désiré sur la base de zéro après la chaîne en utilisant les supports de matrice carrée, comme dans
$str[42]
. Pensez à une chaîne comme un tableau de caractères à cette fin. Les fonctionssubstr()
etsubstr_replace()
peuvent être utilisées lorsque vous souhaitez extraire ou remplacer plus d'un caractère.Remarque: À partir de PHP 7.1.0, les décalages de chaînes négatifs sont également pris en charge. Ceux-ci spécifient le décalage de la fin de la chaîne. Auparavant, les décalages négatifs émis
E_NOTICE
pour la lecture (donnant une chaîne vide) etE_WARNING
pour l'écriture (laissant la chaîne intacte).Remarque: Les chaînes peuvent également être accessibles à l'aide d'accolades, comme dans
$str{42}
, dans le même but.
Les accolades '{}' sont héritées des hachages Perl et sont abandonnées. – Kekoa
Attention, $str[n]
et $str{n}
donnent n-ième octet de String
, pas de caractère n-ième String
. Pour l'encodage multi-octets (UTF-8, etc.), un caractère n'a pas besoin d'être un octet.
$str{0}
- premier octet de chaîne
mb_substr($str, 0, 1)
- premier caractère de chaîne (y compris les jeux de caractères multi-octets)
Il est à noter que ** avant PHP 5.6 ** le codage par défaut du module [mbstring] (http://php.net/mbstring) n'est pas UTF-8 - cela peut être changé à deux endroits: dans les scripts php ' mb_internal_encoding ('UTF-8'); '-ou-- php.ini' mbstring.internal_encoding = 'UTF-8'' –
je l'ai trouvé dans la [documentation de chaîne] (http://php.net /manual/en/language.types.string.php#language.types.string.substr): "Remarque: Les chaînes peuvent également être accédées en utilisant des accolades, comme dans' $ str {42} ', dans le même but." (mais comme indiqué dans les réponses, la syntaxe '[]' est un meilleur choix) –
Le sujet est également discuté sur cette question: [Obtenir le premier caractère d'une chaîne avec $ str \ [0 \]] (http://stackoverflow.com/questions/1972100/getting-the-first-character-of-a-string-with-str0). –