Почему я не могу сразу получить доступ к элементам в массиве, возвращенном explode()
?
Например, это не работает:
$username = explode('.',$thread_user)[1];
//Parse error: syntax error, unexpected '[
Но этот код делает:
$username = explode('.',$thread_user);
$username = $username[1];
Я обычно не программирую в PHP, таким образом, это довольно сбивает с толку меня.
На самом деле PHP просто не поддерживает этот синтаксис. В таких языках, как Javascript (например), синтаксический анализатор может обрабатывать более сложные операции вложения / цепочки, но PHP не является одним из этих языков.
Поскольку explode() возвращает массив, вы можете использовать другие функции, например $username = current(explode('.',$thread_user));
Причина неочевидности того, как сделать то, что вы хотите, заключается в том, что explode
может вернуть false
. Вы должны проверить возвращаемое значение перед индексированием в него.