Не могу обернуть мою голову вокруг этого …
Скажем, мы взорвали все это так:
$ 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, и мы закончили!