#php #arrays
#php #массивы
Вопрос:
У меня есть массив $arr, который при вводе var_dump выглядит следующим образом. Какой самый простой способ получить 2-й последний элемент (в данном случае «простой»). Я не могу сделать $arr[4], потому что количество элементов может варьироваться в зависимости от URL, и я всегда хочу только 2-й последний. (обратите внимание, что в конце есть дополнительная пустая строка, которая всегда будет там.)
array
0 => string 'http:' (length=5)
1 => string '' (length=0)
2 => string 'site.com'
3 => string 'group'
4 => string 'simple'
5 => string 'some-test-url'
6 => string '' (length=0)
Комментарии:
1. Почему бы просто не спросить «Как мне получить последний компонент URL в строке?» вместо этого?
2. Обратите внимание, что предпоследние и
$arr[4]
не одно и то же. Если я не сумасшедший, я бы подумал, что$arr[4]
это третий по счету.3. @ Ignacio Vazquez-Abrams Это не последний. Это 2-й последний или даже 3-й последний, если вы считаете последнюю пустую строку элементом.
4. В качестве дополнительного замечания, но очень важного: если это ваша структура, вы должны создать для нее класс Url. Я уверен, что у вас есть функции, которые управляют этим массивом, поэтому они должны быть методами вашего класса url. Наше кодирование часто настолько слабое в PHP; как сообществу, нам нужно совершенствоваться в использовании хорошо зарекомендовавших себя и структурированных методов.
Ответ №1:
До тех пор, пока это не ключевой или хэшированный массив, и он содержит более двух элементов…
$arr[count($arr) - 2];
Обратите внимание: моя интерпретация от второго до последнего является второй с конца. Это может отличаться от вашего. Если да, вычтите 3.
Ответ №2:
Получить количество и вычесть 3?
$arr[count($arr)-3]
Ответ №3:
if (!empty($arr) amp;amp; count($arr)>1){
//or > 2, -3 for your extra ending
$val = $arr[count($arr)-2];
}
Должно вам помочь.
Ответ №4:
$second_last = count($array) - 3;
$value = $array[$second_last];
Ответ №5:
$arrayLen=count($arr);
echo $arr[$arrayLen-2];
Ответ №6:
Еще одна альтернатива:
echo current(array_slice($data, -3, 1));