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