Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

UPDATE

Так как PHP 5.4 (выпущен 01-Мар-2012) поддерживает разметку массива.

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

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

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

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

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

Ответ 5

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

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