Intereting Posts

Почему я не могу использовать индекс массива для возвращаемого значения функции?

Почему я не могу это сделать?

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];