Как получить доступ к индексу массива при использовании функции explode () в той же строке?

Не могу обернуть мою голову вокруг этого …

Скажем, мы взорвали все это так:

$ extract = explode ('tra-la-la', $ big_sourse);

Затем мы хотим получить значение в индексе 1:

$ finish = $ extract [1];

Мой вопрос в том, как это сделать, чтобы говорить так. Что-то похожее на это:

$ finish = explode ('tra-la-la', $ big_sourse) [1]; // не работает

Что-то вроде следующего будет работать как шарм:

$ finish = end (explode ('tra-la-la', $ big_sourse));

// или

$ finish = array_shift (explode ('tra-la-la', $ big_sourse));

Но что, если значение сидит где-то посередине?

В PHP 5.4 реализована функция разыменования функций Array . Для более старой версии это ограничение в парсере PHP, которое было исправлено здесь , так что на данный момент я не боюсь.

Что-то вроде того :

end(array_slice(explode('tra-la-la', $big_sourse), 1, 1)); 

Хотя я не думаю, что это лучше / яснее / красивее, чем писать на двух строках.

вы можете использовать list :

 list($first_element) = explode(',', $source); 

[1] фактически будет вторым элементом в массиве, не уверен, действительно ли это имело в виду. если это так, просто добавьте еще одну переменную в конструкцию списка (и опустите первое, если это необходимо)

 list($first_element, $second_elment) = explode(',', $source); // or list(, $second_element) = explode(',', $source); 

Мое предложение – да, я что-то придумал – было бы использовать дополнительный способ, разрешенный для функции. Если он установлен и положителен, возвращаемый массив будет содержать максимум предельных элементов с последним элементом, содержащим остальную строку. Итак, если мы хотим получить, скажем, значение в индексе 2 (конечно, мы уверены, что мы хотим, чтобы мы были там заранее), мы просто делаем это следующим образом:

 $finish = end(explode('tra-la-la', $big_sourse, 3)); 

explode вернет массив, содержащий максимум три элемента, поэтому мы «закончим» до последнего элемента, который мы искали, проиндексировали 2, и мы закончили!