Вызов PHP взорвался и получил доступ к первому элементу?

Возможный дубликат:
Синтаксис PHP для результата функции разыменования

У меня есть строка, которая выглядит как 1234 # 5678 . Теперь я называю это:

$last = explode("#", "1234#5678")[1] 

Его не работает, есть некоторая синтаксическая ошибка … но где? То, что я ожидаю, составляет 5678 в $last . Это не работает в PHP?

Related of "Вызов PHP взорвался и получил доступ к первому элементу?"

Разрушение разводов невозможно в текущих версиях PHP (к сожалению). Но вы можете использовать list [docs], чтобы напрямую назначать элементы массива переменным:

 list($first, $last) = explode("#", "1234#5678"); 

ОБНОВИТЬ

Поскольку PHP 5.4 (выпущен 01 марта 2012 г.), он поддерживает разыменование разделов .

Скорее всего, PHP смущается синтаксисом. Просто назначьте результат explode переменной массива, а затем используйте для него индекс:

 $arr = explode("#", "1234#5678"); $last = $arr[1]; 

Вот как это сделать в одной строке:

$last = current(array_slice(explode("#", "1234#5678"), indx,1));

Где indx – индекс, который вы хотите в массиве, в вашем примере это было 1.

Вы не можете этого сделать:

 explode("#", "1234#5678")[1] 

Потому что explode – это функция, а не массив. Он возвращает массив, конечно, но в PHP вы не можете рассматривать функцию как массив до тех пор, пока он не будет установлен в массив.

Вот как это сделать:

  $last = explode('#', '1234#5678'); $last = $last[1]; 

PHP может быть немного тусклым. Вероятно, вам нужно сделать это на двух строках:

 $a = explode("#", "1234#5678"); $last = $a[1];