Почему я не могу это сделать?
explode(',','1,2,3', 1)[0]
Это поддерживает любой другой язык.
Ответы, которые я ищу: (поскольку люди, похоже, думают, что это бессмысленная напыщенность)
Есть ли какая-то разница между тем, как ведет себя переменная и возвращаемое значение, о котором мне следует знать?
Это было дизайнерское решение? Были ли они ленивы? Есть ли что-то в том, как был построен язык, что делает его чрезвычайно сложным для реализации?
Почему я не могу это сделать?
Потому что PHP не поддерживает этот синтаксис. Но вы можете передать его функции, например:
current(explode(',','1,2,3', 1));
В противном случае вам нужно сначала присвоить возвращаемое значение переменной, а затем перейти через индекс.
Дополнительная информация :
Таким образом, можно объединить вызовы методов или доступ к свойствам. Теперь долгое время люди запрашивали одно и то же для доступа к смещению массива. Это часто отвергалось из-за неопределенности в отношении проблем с памятью , поскольку нам не нравятся утечки памяти. Но после правильной оценки Фелипе совершил патч, который позволяет вам делать такие вещи, как:
function foo() { return array(1, 2, 3); } echo foo()[2]; // prints 3
http://schlueters.de/blog/archives/138-Features-in-PHP-trunk-Array-dereferencing.html
Таким образом, он находится в конвейере разработки, но, как я уже сказал, в настоящее время не поддерживается.
PHP> = 5.4 теперь поддерживает разуплотнение функционального массива, например foo()[0]
В моих рамках я написал функцию, чтобы иметь возможность сделать это со всем возможным массивом:
function elem($array,$key) { return $array[$key]; } //> usage echo elem($whateverArrayHere,'key'); echo elem(explode(),1);
Explode возвращает массив, а не ссылку.
$tab = explode (',','1,2,3', 1); $tab[0] = ','
Вы могли бы также рассмотреть ….
list($value_I_want_to_keep)=explode(',','1,2,3', 1);
или
$value_I_want_to_keep=strtok('1,2,3',',');
$pieces = explode(',','1,2,3', 1);
Используйте первый индекс с:
$pieces[0];