Возможный дубликат:
Синтаксис PHP для результата функции разыменования
У меня есть строка, которая выглядит как 1234 # 5678 . Теперь я называю это:
$last = explode("#", "1234#5678")[1]
Его не работает, есть некоторая синтаксическая ошибка … но где? То, что я ожидаю, составляет 5678 в $last
. Это не работает в 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];