Я хочу получить первую букву строки, и я заметил это $str[0]
работает отлично. Я просто не уверен, является ли это 'хорошей практикой', поскольку та нотация обычно используется с массивами. Эта функция, кажется, очень хорошо не документируется так, я оказываюсь к Вам парнями, чтобы сказать мне, если это в порядке – во всех отношениях – для использования этой нотации?
Или если я просто придерживаюсь старого доброго substr($str, 0, 1)
?
Кроме того, я отметил это фигурные скобки ($str{0}
) работы также. Что произошло с этим?
Да. Строки можно рассматривать как символьные массивы, а способ доступа к позиции массива - использовать оператор []
. Обычно в использовании $str[0]
(и я уверен, что это намного быстрее, чем метод substr()
), нет никакой проблемы.
Есть только одно предостережение с обоими методами: они получат первый байт, а не первый символ. Это важно, если Вы используете многобайтовые кодировки (например, UTF-8). Если Вы хотите это поддержать, используйте mb_substr()
. Возможно, в наши дни вы всегда должны предполагать ввод нескольких байт, так что это лучший вариант , но он будет немного медленнее.
Синтаксис {} устарел начиная с версии PHP 5.3.0. Рекомендуется заключать в квадратные скобки.
. Единственное, в чем я сомневаюсь - насколько применима эта техника на многобайтовых строках, но если это не принимается во внимание, то я подозреваю, что вы прикрыты. (Если сомневаетесь, mb_substr()
кажется очевидным безопасным выбором)
Однако, с точки зрения общей картины, я должен задаться вопросом, как часто вам нужно обращаться к 'n' символу в строке, чтобы это было ключевым соображением.
. Говоря как простой смертный, я бы придерживался $str[0]
. Насколько я понимаю, быстрее понять значение $str[0]
с первого взгляда, чем substr($str, 0, 1)
. Это, вероятно, сводится к вопросу предпочтительности.
Что касается производительности, то профиль профиля. :) Или вы можете обратиться к исходным текстам PHP...
.Я использовал эту нотацию и раньше, без побочных эффектов и недоразумений. Это имеет смысл - строка - это всего лишь массив символов, в конце концов.