Индексирование квадратной скобки константной строки PHP - PullRequest
4 голосов
/ 25 июня 2010

Я пытаюсь получить постоянную строку и проиндексировать ее, как если бы это был массив символов (синтаксис в квадратных скобках).Когда я пытаюсь выполнить этот код, в последней строке происходит сбой.

define( 'CONSTANT_STRING','0123456789abcdef');
echo CONSTANT_STRING; // Works by itself :)
$string = CONSTANT_STRING;
echo $string[9]; // Also works by itself.
echo strlen(CONSTANT_STRING); // Also works by itself.

echo substr(CONSTANT_STRING, 9, 1); // Ok, yes this works, but not as clean.

echo CONSTANT_STRING[9]; // Fails as a syntax (parse) error.

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

1 Ответ

4 голосов
/ 25 июня 2010

PHP-константы могут быть только скалярными значениями, поэтому движок не пытается правильно проанализировать константу, которая используется как нечто большее, чем скаляр, например массив или объект.

В вашем случае это проблема, потому что скобки используются для указания на индекс массива , а может использоваться как ярлык для захвата символа в определенном месте строки.

Вам просто нужно сделать это «сложным» способом и использовать substr () .

...