Как получить доступ к элементу массива без назначения переменной массива?

Например:

echo explode('@',$var); //but only echoing element 1 or 2 of the array? 

Вместо:

 $variable = explode('@',$var); echo $variable[0]; 

Спасибо.

Начиная с PHP 5.4 вы можете написать:

 echo explode('@', $var)[0]; 

В более ранних версиях PHP вы можете только добиться поведения с помощью трюков:

 echo current(explode('@', $var)); // get [0] echo next(explode('@', $var)); // get [1] 

Возвращение элемента в произвольное положение невозможно без временной переменной.


Вот простая функция, которая может привести в порядок ваш код, если вы не хотите использовать переменную каждый раз:

 function GetAt($arr, $key = 0) { return $arr[$key]; } 

Назовите:

 echo GetAt(explode('@', $var)); // get [0] echo GetAt(explode('@', $var), 1); // get [1] 

В версиях PHP, поддерживающих разыменование массива, вы можете использовать следующий синтаксис:

 echo explode('@', $var)[0]; 

Если нет, вы можете использовать list() :

 list($foo) = explode('@', $var); 

Вышеприведенный оператор присваивает первое значение взорванного массива переменной $foo .

До PHP 5.4 вы могли бы сделать это:

 echo array_shift(explode('@', $var)); 

Это отразится на первом элементе массива, созданного в результате взрыва. Но он делает это без ошибок проверки выхода взорваться, что не является идеальным.

list можно также использовать следующим образом:

 list($first) = explode('@', $var); list(,$second) = explode('@', $var); list(,,$third) = explode('@', $var); 

Просто используйте reset как это

 echo reset(explode('@', $var));