Получение первого символа строки с $str [0]

Я хочу получить первую букву строки, и я заметил это $str[0] работает отлично. Я просто не уверен, является ли это 'хорошей практикой', поскольку та нотация обычно используется с массивами. Эта функция, кажется, очень хорошо не документируется так, я оказываюсь к Вам парнями, чтобы сказать мне, если это в порядке – во всех отношениях – для использования этой нотации?

Или если я просто придерживаюсь старого доброго substr($str, 0, 1)?

Кроме того, я отметил это фигурные скобки ($str{0}) работы также. Что произошло с этим?

262
задан Tatu Ulmanen 28 December 2009 в 13:27
поделиться

5 ответов

Да. Строки можно рассматривать как символьные массивы, а способ доступа к позиции массива - использовать оператор [] . Обычно в использовании $str[0] (и я уверен, что это намного быстрее, чем метод substr()), нет никакой проблемы.

Есть только одно предостережение с обоими методами: они получат первый байт, а не первый символ. Это важно, если Вы используете многобайтовые кодировки (например, UTF-8). Если Вы хотите это поддержать, используйте mb_substr(). Возможно, в наши дни вы всегда должны предполагать ввод нескольких байт, так что это лучший вариант , но он будет немного медленнее.

.
372
ответ дан 23 November 2019 в 02:34
поделиться

Синтаксис {} устарел начиная с версии PHP 5.3.0. Рекомендуется заключать в квадратные скобки.

.
45
ответ дан 23 November 2019 в 02:34
поделиться

Единственное, в чем я сомневаюсь - насколько применима эта техника на многобайтовых строках, но если это не принимается во внимание, то я подозреваю, что вы прикрыты. (Если сомневаетесь, mb_substr() кажется очевидным безопасным выбором)

Однако, с точки зрения общей картины, я должен задаться вопросом, как часто вам нужно обращаться к 'n' символу в строке, чтобы это было ключевым соображением.

.
12
ответ дан 23 November 2019 в 02:34
поделиться

Говоря как простой смертный, я бы придерживался $str[0]. Насколько я понимаю, быстрее понять значение $str[0] с первого взгляда, чем substr($str, 0, 1). Это, вероятно, сводится к вопросу предпочтительности.

Что касается производительности, то профиль профиля. :) Или вы можете обратиться к исходным текстам PHP...

.
6
ответ дан 23 November 2019 в 02:34
поделиться

Я использовал эту нотацию и раньше, без побочных эффектов и недоразумений. Это имеет смысл - строка - это всего лишь массив символов, в конце концов.

1
ответ дан 23 November 2019 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: